Thema: Delphi Destructor in TClass

Einzelnen Beitrag anzeigen

Benutzerbild von Jelly
Jelly

Registriert seit: 11. Apr 2003
Ort: Moestroff (Luxemburg)
3.741 Beiträge
 
Delphi 2007 Professional
 
#1

Destructor in TClass

  Alt 17. Feb 2004, 10:43
Hallo,

habe ein kleines Verständisproblem zu meinem Destructor in einer aus TObject abgeleiteten Klasse... hier mal bischen Quelltext:

Delphi-Quellcode:
type
  TLogFile = class
  private
     FLogname : string ;
     FZeitstempel : boolean ;
     LF : textfile ;
  public
     constructor Create (Logfilename : string ; const MitZeitstempel : boolean = false) ;
     destructor destroy ; override ;
  end ;

var
 log : TLogFile ;

implementation
uses dialogs, sysutils ;

{ TLogFile }

constructor TLogFile.Create (Logfilename : string ; const MitZeitstempel : boolean = false) ;
begin
     { ... der klappt, deshalb ausgeklammert }
end;

destructor TLogFile.Destroy ;
begin
     try
       try
          showmessage ('Destroy Log') ;
          closefile (LF) ;
       except
       end ;
     finally
        inherited Destroy ;
     end ;
end;
Jetz wird aber, wenn ich über log.free versuche die Klasse wieder frei zu geben, mein Destructor nicht aufgerufen... Wie kann das sein.

Im übrigen versteh ich auch nicht so recht, was überhaupt in TObject passiert... folgende Zeile sind da implementiert:
Delphi-Quellcode:
destructor TObject.Destroy;
begin
end;

procedure TObject.Free;
begin
  if Self <> nil then
    Destroy;
end;
Also wenn mich da nicht alles täuscht, wird durch den Aufruf log.free mein neuer Destructor Destroy aufgerufen. Mit dem Aufruf inherited Destroy wird dann der aus TObject noch ausgeführt, WO NICHTS DRIN STEHT... Mich würd mal interessieren, wo denn jetzt überhaupt der Speicher freigegeben wird... TObject ist doch die Basisklasse, oder irre ich mich da.

Vielen Dank schon mal für bisch *LichtinTunnelbringen*

Gruß,
Tom
  Mit Zitat antworten Zitat