valeur de fonction de retour

valeur de fonction de retour - Delphi/Pascal - Programmation

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;

Reply

Marsh Posté le 07-02-2003 à 05:27:15   

Reply

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 :d
 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 ...

Reply

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


---------------
Des bons sites pour Delphi? http://forum.hardware.fr/forum2.php3?post=16838&cat=10 -- informaticien -- http://www.z0rglub.com/phpwebgallery/ -- Delphi :love:
Reply

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 :d  
MaListe.add('bonjour';);  
end;  

Reply

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)


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed