Hello christian,
you wrote> Por que est�s haciendo algo mal, ya que FreeAndNIL hace exactamente
> eso.
cO> Plop :p
:) :) :)
> A menos que lo que falle sea que no compile, entonces la causa es
> otra.
cO> Compila normal ...
Ah! bien...
cO> TobjectList, mmm uso arrays de componentes por ejemplo: cO> FullPanels : Array of Panels;
cO> ahora en el mismo destructor pongo
cO> FreeAndNil(FullPanels[i]) // recorro el i y me manda error al ejecutar el cO> destructor
Bueno, esto ya huele a fallo del compilador o similar, ya que FreeAndNIL espera un par�metros (TObject) modificable, si le pasas un elemento de un array no es exactamente lo mismo y es posible que se est� equivocando. Versi�n del compilador fpc ?
cO> le cambio por
cO> fullPanels[i].free;
cO> fullPanels[i]:=nil;
cO> y esto si funciona en el mismo destructor
Es lo mismo, s�lo hay una diferencia en como funciona FreeAndNIL y es en el caso de que el free lance una excepci�n. B�sicamente lo que hace FreeAndNIL es:
tmp:=fullPanels[i];
FullPanels[i]:=nil;
tmp.free;
De este modo, aunque el .free lance una excepci�n, el :=nil siempre se
ha ejecutado. Vamos que deber�a llamarse NILAndFree :)
Por cierto, en vez del array ser�a m�s l�gico (a mi modo de verlo) usar un TObjectList, ya que cuando borras un elemento del TObjectList el free se invoca autom�ticamente, al igual que cuando haces un free sobre el TObjectList, liberando todos los objetos.
Best regards,
Jos�