Forum: Programmieren allgemein
by alzaimar,
16. Okt 2005
Nein.
Free ist eine Procedure (keine Class Procedure, sorry) von TObject, und die ist so definiert:
procedure TObject.Free;
begin
if Self <> nil then
Destroy;
end;
Insofern stimmt Deine Aussage natürlich teilweise, weil Free eben den Speicher freigibt. Aber, wenn ich vorher die Objektreferenz auf Nil setze, passiert einfach N-I-X. Der Speicher wird nicht freigegeben, aber es...
Forum: Programmieren allgemein
by alzaimar,
15. Okt 2005
Free ist eine Class Procedure, die erst prüft, ob die Referenz <> nil ist, und erst dann ggf. den destructor aufruft. Also, eigentlich dürfte auch hier nichts passieren:
Var
sl : TStringlist;
Begin
sl := nil;
sl.Free;
End;
Wenn aber doch, dann tippe ich, ehrlich gesagt, auf einen dieser fiesen Seiteneffekte, der sich dann einstellt, wenn irgendwo im Code was zerschossen wurde...
Forum: Programmieren allgemein
by alzaimar,
15. Okt 2005
Hupsa, selbstverständlich, ManuMF :oops: :wall:
:zwinker:
Forum: Programmieren allgemein
by alzaimar,
15. Okt 2005
Die Zeilen
kl := Nil;
kl.Free;
Sind falschrum, dreh Sie um und es wird ein Schuh draus, oder verwende gleich
FreeandNil (kl);