IdentifiantMot de passe
Loading...
Mot de passe oubli� ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les r�ponses en temps r�el, voter pour les messages, poser vos propres questions et recevoir la newsletter

C++Builder Discussion :

fonctions return un TStringList cree avec new


Sujet :

C++Builder

Vue hybride

Message pr�c�dent Message pr�c�dent   Message suivant Message suivant
  1. #1
    Membre confirm�
    Inscrit en
    Juin 2002
    Messages
    198
    D�tails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 198
    Par d�faut fonctions return un TStringList cree avec new
    Bonjour,
    J'essais d'ecrire une fonction qui doit retourner un TStringList.
    Dans ma methode, cette liste est creee avec "TStringList *sl = new sl;"
    Je ne peux donc pas utiliser "delete sl" car apres "return (sl)" la fonction est fermee.
    Je pense devoir utiliser "~.. " mais je ne sais pas trop comment faire.
    Merci de m'aider

  2. #2
    Membre �m�rite
    Avatar de bandit boy
    Profil pro
    Inscrit en
    F�vrier 2006
    Messages
    916
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : F�vrier 2006
    Messages : 916
    Par d�faut
    Salut,
    Voici un code d'une fonction permettant de cr�er un TStringList:
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    void __fastcall TForm1::Button1Click(TObject *Sender)
    {
         TStringList *sl = CreerTStringList();
         sl->Add("test de la première ligne");
         Label1->Caption = sl->Strings[0];
    }
    //---------------------------------------------------------------------------
    TStringList* CreerTStringList(void)
    {
        TStringList *Tmp = new TStringList;
        return Tmp;
    }
    Ta fonction renvoie un pointeur de TStringList, ici l'appuie du bouton lance cette fonction et la v�rifie en ajoutant une cha�ne de caract�re.

    En esp�rant que c'est ce que tu souhaitais

  3. #3
    Membre Expert

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    1 412
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 1 412
    Par d�faut
    Salut !

    Pour le delete, ne te fais pas de bile !

    L'objet n'est pas cr�� ni dans le scope de la m�thode ni sur la pile !
    Il n'y a que le pointeur vers l'objet qui soit cr�� sur la pile (quand je dis "cr�� sur la pile"... j'esp�re qu'on se comprend ).

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    TStringList* Nouvelle()
    {
    //pointeur local sur la pile, vers un objet TStringList créé ailleurs en mémoire
    TStringList *sl = new TStringList; 
    //...
    //...
    // renvoie l'adresse de la TStringList et non l'adresse du pointeur sur la pile
    return sl; 
    }
    Donc (... et �a d�pend du d�veloppeur):

    Pour quelqu'un qui sait ce qu'il fait :

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    TStringList *sl = Nouvelle();
    //...
    //...
    // du moment qu'il y a un TStringList (qui n'a pas été supprimé) au bout...
    sl->Clear(); // <<< c'est une habitude chez moi !
    delete sl;
    A plus !

  4. #4
    Membre confirm�
    Inscrit en
    Juin 2002
    Messages
    198
    D�tails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 198
    Par d�faut
    Merci,
    J'avais perdu la trace de ma question
    Je croyais que je devais avoir un delete sl; dans le destructeur de la classe.
    Pour la definition de pile ... je vais jeter un coup d'oeil vers la Faq.
    Merci
    A+

  5. #5
    Membre Expert
    Avatar de kmaniche
    Inscrit en
    Janvier 2006
    Messages
    1 717
    D�tails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 717
    Par d�faut
    Pourquoi ne pas la d�clarer en globale.

Discussions similaires

  1. R�ponses: 7
    Dernier message: 17/11/2011, 10h16
  2. R�ponses: 2
    Dernier message: 10/12/2008, 02h10
  3. fonction return () avec retour de plusieurs valeurs
    Par nuphius dans le forum Langage
    R�ponses: 4
    Dernier message: 06/01/2007, 17h44
  4. Probl�me avec new
    Par Azharis dans le forum C++
    R�ponses: 18
    Dernier message: 27/04/2005, 17h45
  5. R�ponses: 5
    Dernier message: 22/04/2005, 11h38

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo