Eventuell wäre sowas in
System.Sysutils etwas resilienter gewesen gegenüber einem Wechsel von
class
zu
interface
oder umgekehrt:
Delphi-Quellcode:
procedure FreeAndNil(const [ref] Obj: TObject); inline; overload;
procedure FreeAndNil(const [ref] Obj: IInterface); inline; overload;
...
procedure FreeAndNil(const [ref] Obj: IInterface); overload;
begin
IInterface(Pointer(@Obj)^) := nil;
end;
Ein
record
wäre dabei natürlich immer noch außen vor, aber das ist wohl auch gar nicht so schlecht.