furax13
Messages postés90Date d'inscriptionmardi 28 octobre 2003StatutMembreDernière intervention24 avril 2008
-
9 août 2006 à 09:22
cs_Loda
Messages postés814Date d'inscriptionvendredi 3 novembre 2000StatutMembreDernière intervention30 juillet 2009
-
10 août 2006 à 14:20
bonjour,
j'ai créé la classe suivante :
TYPE
TContrainteListe = TList;
TCoilListe = TList;
cs_neko
Messages postés135Date d'inscriptionjeudi 14 août 2003StatutMembreDernière intervention12 octobre 20061 9 août 2006 à 09:36
for i:=FListeContrainte.Count-1 DownTo 0 Do
TCOContrainte(FListeContrainte.Items[i]).Free;
TOn FNbCOntrainte est inutil ( il y a le count de FListeContrainte pour connaitre le nombre d'éléments dans la liste ) Enfin je suppose que c'est la même chose en regardant ton code
for i:= 0 to FNbContraintes-1 do
with getContrainteDepuisListe(I) do
begin
free;
end;
Ca c'est très laid, le With ne sert a rien et il alourdi le code. Tu peux faire :
for i:= 0 to FNbContraintes-1 do
getContrainteDepuisListe(I).Free
Directement ( ou encore mieu, le code plus haut ).
IF assigned(FListeContrainte) THEN
FListeContrainte.free;
La méthode Free verrifie déjà si l'objet est a nil ou pas, la condition ne sert a rien ici :)
heu voilà, si j'ai bien lu je crois avoir répondu a ta question
cs_Loda
Messages postés814Date d'inscriptionvendredi 3 novembre 2000StatutMembreDernière intervention30 juillet 20093 10 août 2006 à 10:09
salut,
absolument certain:
procedure TObject.Free;
begin
if Self <> nil then
Destroy;
end;
mais, tu as raison "pour s'assurer que le pointeur ne pointe plus vers l'ancien espace mémoire" FreeAndNil est mieux.
Cependant, cela pose des fois des problèmes. EN effet, FreeAndNil devrait s'appeler NilAndFree:
procedure FreeAndNil(var Obj);
var
Temp: TObject;
begin
Temp := TObject(Obj);
Pointer(Obj) := nil;
Temp.Free;
end;
ce peut poser des problèmes pour certaines classes. Tu te retrouve avec des AV lors des destroy.
cs_Loda
Messages postés814Date d'inscriptionvendredi 3 novembre 2000StatutMembreDernière intervention30 juillet 20093 9 août 2006 à 11:52
salut,
perso, je te recommande TObjectList:
Use TObjectList to store and maintain a list of objects. TObjectList provides properties and methods to add, delete, rearrange, locate, access, and sort objects. If the OwnsObjects property is set to true (the default), TObjectList controls the memory of its objects, freeing an object when its index is reassigned; when it is removed from the list with the Delete, Remove, or Clear method; or when the TObjectList instance is itself destroyed.