Einzelnen Beitrag anzeigen

Hawkeye219

Registriert seit: 18. Feb 2006
Ort: Stolberg
2.227 Beiträge
 
Delphi 2010 Professional
 
#18

Re: Wann .Free und wann .Destoy benutzen

  Alt 10. Jul 2007, 22:29
Hallo,

Zitat von SirThornberry:
Mit Compilermagic geht einiges.
Zitat von sirius:
Der Compiler muss halt einfach einmal mehr mitdenken und beim Aufruf von free die self-varaible als Referenz übergeben.
wie würdet ihr das - als Compilerbauer - im folgenden Fall lösen?

Delphi-Quellcode:
TDemoClass = class
private
  ...
public
  property Control: TWhateverClass
    read GetControl write SetControl;
end;

var
  Instance : TDemoClass;
begin
  ...
  Instance.Control.Free;
  ...
end;
Das Beispiel wirkt konstruiert, aber ähnliche Codestücke findet man in der VCL.

Ein automatisch generiertes "Instance.Control := nil" nach dem Aufruf der Free-Methode funktioniert nur, wenn der Setter dies geeignet verarbeitet. Welchen Code soll der Compiler erzeugen, wenn kein Setter vorhanden ist?

Die Prozedur FreeAndNil ist ein einfaches Werkzeug, mit dessen Hilfe der Programmierer eine Instanz freigeben und eine zugehörige Referenz sicher löschen kann. Nur der Programmierer kann wissen, wann und wo das geschehen sollte, und ob eventuell weitere Referenzen existieren, die ebenfalls gelöscht werden müssen.

Gruß Hawkeye
  Mit Zitat antworten Zitat