valeur de fonction de retour - Delphi/Pascal - Programmation
Marsh Posté le 07-02-2003 à 08:44:11
ben là c normal que cela ne fonctionne pas, si tu détruit ta liste avant de la retourner...
alors au choix tu peux faire
procedure FaireJouJouAvecMaListe(MaListe:TStringList);
begin
if MaListe=nil then exit; // on sait jamais
MaListe.add('bonjour';
end;
ou alors si tu veux une fonction
function FaireJouJouAvecMaListe:TStringList;
begin
result := TStringList.create;
result.add('bonjour';
end;
avec cette solution il ne faudra pas oublier de libérer ta liste ...
Marsh Posté le 07-02-2003 à 09:48:26
result.Assign(MyList);
C un super moyen pour faire des memory leak, le mieux est de passer ta liste par référence comme paramètre de ta fonction
Marsh Posté le 18-02-2003 à 17:35:23
je susi d'accord avec Poire : "le mieux est de passer ta liste par référence "
cependant, rajoutes le mot clé var, pour indiquer que la liste va être modifiée dans ta fonction. C'est pas indispensable mais c'est bp plus propre et lisible (une objection ?)
procedure FaireJouJouAvecMaListe(var MaListe:TStringList);
begin
if MaListe=nil then exit; // on sait jamais
MaListe.add('bonjour';
end;
Marsh Posté le 18-02-2003 à 17:38:51
non c'est vrai c'est plus propre
de la même manière, mettre const pour les trucs qui ne seront pas modifiés, surtout pour les string et les record, où ça améliore les perfs (passage de l'adresse au lieu de tout recopier)
Marsh Posté le 07-02-2003 à 05:27:15
dans une fonction en delphi,
je veux retourner une liste...
genre on peut pas envoyer ce qu'on veut et ensuite détruite l'objet?
sinon je vais être obliger de mettre la liste global
function():TStringList;
var
MyList: TStringList;
begin
MyList := TStringList.Create;
...
...
result:=MyList;
MyList.Free;
end;