Zitat:
Delphi-Quellcode:
if Objekt <> nil then
begin
Objekt.Free;
Objekt := nil;
end;
Eigentlich reicht ja
Delphi-Quellcode:
Objekt.Free;
Objekt := nil;
Dieses ( if Assigned(Objekt) then )
if Objekt <> nil then
wird ja in .Free geprüft.
FreeAndNil prüft dieses auch nicht mehr, da es inter wiederum .Free aufruft, welches das ja prüft.
(aber im Prinzip isses ja egal)
Aber das mit der "Kaskade" stimmt schon, da durch FreeAndNil einfach
sichergestellt ist, daß die Objekt-Variable auf nil gesetzt wird.
Delphi-Quellcode:
// Objekt := nil; >> wird sicher auf nil gesetzt
// Objekt.Free; >> exception
Temp := Objekt;
Objekt :=
nil; >> wird sicher auf
nil gesetzt
Temp.Free; >>
exception
Hier ist dieses eben nicht sichergestellt, wie negaH es eben so schön erklärte
Delphi-Quellcode:
Objekt.Free; >>
exception
Objekt :=
nil; >> wird NICHT mehr auf
nil gesetzt,
>> da der Programmablauf vorher abbricht