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