Oder
Delphi-Quellcode:
procedure D4FreeAndNil(Object: TObject);
begin
Object.Free;
Object := nil;
end;
Es verhält sich so:
Free entfernt nur das Objekt aus dem Speicher, die Objektvariable beinhaltet abr noch eine "gültige" Zeiger-Adresse, die aber nach dem
Free je doch auf einen ungültigen Speicherbereich verweist. Da die Objektvariable immer noch einen gültigen Zeiger beinhaltet liefert ein Test mit
Assigned auch nach einem
Free noch
True zurück.
FreeAndNil setzt die Objektvariable eben noch zurück - auf
nil eben, wie der Prozedurname schon vermuten läßt.