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

  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 407
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 1 407
    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