![]() |
Problem mit FreeAndNil
Hallo erstmal!
Ich habe ein Problem mit FreeAndNil(). Meine Testklasse:
Delphi-Quellcode:
und folgenden TestCode:
type
TTest = class(TObject) public constructor Create(); destructor Free; destructor Destroy(); override; end; constructor TTest.Create; begin inherited; end; destructor TTest.Free; begin end; destructor TTest.Destroy; begin inherited; end;
Delphi-Quellcode:
Nun setzte ich in beiden Destruktoren einen Breakpoint, folgendes passiert:
procedure TForm1.Button1Click(Sender: TObject);
var MyTest1, MyTest2 : TTest; begin MyTest1 := TTest.create(); MyTest1.Free; // <-- ruft TTest.Free auf, wie erwartet MyTest2 := TTest.create(); FreeAndNil(MyTest2); // <-- ruft TTest.Destroy auf, jedoch nicht TTest.Free end;
Ich benutze Delphi 7. Danke für Hinweise und Gruss Hugo |
Re: Problem mit FreeAndNil
Die Methode Free wird auch von TObject bereit gestellt (übrigens ist free kein Destructor) und freeand nil ruft die Methode Free von TObject auf.
Du müsstest eigentlich auch eine Warnung bekommen, dass du eine Methode verdeckst o.ä. |
Re: Problem mit FreeAndNil
.Free ruft den destructor Destroy auf.
Diese Deklaration solltest du geschwind wieder entfernen :P Das soll nur als Erweiterung der Erläuterung von sirius dienen. |
Re: Problem mit FreeAndNil
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:38 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz