Zitat von
LoL:
.... Wird nicht bei FreeAndNil auch der Speicher freigegeben und geleert?
Hai LoL,
FreeAndNil und .Free geben den Speicher der Instanz nur wieder frei. Der Speicher wird nicht gelöscht.
Der Unterschied zwichen FreeAndNil und .Free ist "nur" das im ersten Fall der Variablen (die ja nur ein Pointer auf eine Instanz ist) der Wert NIL zugewiesen wird. Dies ist nützlich um im Programm abfragen zu können ob die "Variable" noch gültig ist.
z.B.:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
sl1 : TStringList;
sl2 : TStringList;
begin
sl1 := TStringList.Create;
sl1.Free;
sl2 := TStringList.Create;
FreeAndNil (sl2);
if Assigned(sl1) then
begin
ShowMessage ('SL1 verweisst noch auf eine Adresse');
end
else
begin
ShowMessage ('SL1 verweisst nicht auf eine Adresse');
end;
if Assigned(sl2) then
begin
ShowMessage ('SL2 verweisst noch auf eine Adresse');
end
else
begin
ShowMessage ('SL2 verweisst nicht auf eine Adresse');
end;
end;
Warum bei dir noch Daten vorhanden sind ist aber nicht normal. Kannst Du etwas mehr Code zeigen?
Stephan B.
"Lasst den Gänsen ihre Füßchen"