Manipulation tstringlist

Résolu
loicbernard Messages postés 16 Date d'inscription jeudi 22 mai 2003 Statut Membre Dernière intervention 15 juin 2005 - 13 juin 2005 à 12:28
florenth Messages postés 1023 Date d'inscription dimanche 1 août 2004 Statut Membre Dernière intervention 17 août 2008 - 14 juin 2005 à 15:28
bonjour tout le monde,


J'ai fait une petite fonction qui renvoit un TStringList. Mais je me demande comment je dois m'y prendre pour créer et libérer l'objet TStringList. voici ma fonction:

function BodyMsgDemarrage: TStringList;
begin
Result := TStringList.Create;
Result.Clear;
Result.Add('Le serveur a été démarré avec la configuration suivante');
Result.Add('Port : ' + FPort);
Result.Add('Client TimeOut : ' + FClientTimeout );
Result.Add('Timeout interval : ' + FTimeoutInterval );
end;

Mon problème est donc de savoir où faire le create et faire le free... pour l'instant je fais donc mon create dans la fonction elle-meme. mais je ne fais jamais de free...
je suppose que ce n'est pas bon mais je ne sais pas comment m'y prendre ... pourriez vous me donner votre avis sur la question?
merci d'avance

loic

14 réponses

ni69 Messages postés 1418 Date d'inscription samedi 12 juin 2004 Statut Membre Dernière intervention 5 juillet 2010 12
13 juin 2005 à 12:57
Tu ne peux pas libérer result, sinon tu retournes un pointeur ne valant
plus rien de concret... C'est donc l'appelant qui doit le libérer.

Tu ne peux donc pas utiliser de fonction renvoyant une TStringList.
Cependant, tu as la possibilité de faire une procédure, qui, plutôt que
de renvoyer un résultat, modifie une
variable :



var

MaVarTStringList : TStringList; // La variable qui sera utilisée



procedure BodyMsgDemarrage(var TStr : TStringList);

begin

TStr.Clear;

TStr.Add('...');


TStr.Add('...');

end;



procedure MaProc; // Procédure demandant la modification de la variable MaVarTStringList

begin

MaVarTStringList := TStringList.Create; // On crée la variable

Try

BodyMsgDemarrage(MaVarTStringList); // On modifie la variable

{traitement de la variable}

Finally

MaVarTStringList.Free; // On libère la variable

End;

end;







@+
Bonne Prog'
Nico

<hr>

N'oubliez pas de cliquer sur Réponse acceptée lorsque la réponse vous convient !




www.ni69.new.fr</italique>
3
Rejoignez-nous