Einzelnen Beitrag anzeigen

Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.034 Beiträge
 
Delphi 12 Athens
 
#7

Re: Warum FreeAndNil so umständlich?

  Alt 17. Mär 2007, 02:44
Delphi-Quellcode:
procedure FreeAndNil(var Obj);
begin
  try
    Obj.Free;
  finally
    Pointer(Obj) := nil;
  end;
end;
und ja, try-finaly wäre für diese Prozedur angebracht.
try-except würde die Exception abfangen und genau dieses soll nicht in dier Prozedur erfolgen.


was try-finally in etwa machen würde (als grobes Schema):
Delphi-Quellcode:
procedure FreeAndNil(var Obj);
begin
  ExceptionHandler.Installieren; // if Exception then goto doExcept;
  Obj.Free;
  goto doFinally;

  doExcept:
  ExceptionHandler.StackWiederherstellen;
  goto doFinally;

  doFinally:
  ExceptionHandler.Freigeben;
  Pointer(Obj) := nil;
end;
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat