Ich trau mich fast nicht diese Frage zu stellen.
Das was ich will sollte so wie ich es mache funktionieren (laut Online-Hilfe und Delphi-Such-Resultate).
Wie wende ich Destructor Destroy richtig an?
Um jeden Fehler zu vermeiden hab ich nur das treffende in eine neue Anwendung geschrieben:
Delphi-Quellcode:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs;
type
TForm1 =
class(TForm)
Constructor Create (Owner : TComponent);
override;
Destructor Destroy;
override;
private
{ Private-Deklarationen }
public
{ Public-Deklarationen }
end;
var
Form1: TForm1;
implementation
{$R *.DFM}
Constructor TForm1.Create (Owner : TComponent);
// Funktioniert prima
begin
inherited Create (Owner);
beep;
showmessage ('
Anwendung wird gestartet');
end;
Destructor TForm1.Destroy;
// macht leider gar nichts
begin
beep;
// Um Sichtbar zu machen, dass der
showmessage ('
Anwendung wird beendet');
// Destructor Destroy wirklich ausgeführt wird
inherited destroy;
end;
end.
Weshalb wird der Destructor TForm1.Destroy beim Beenden der Anwendung nicht ausgeführt?
Oder kann es sein, dass ich das ShowMessage-Fenster nicht sehe weil die Anwendung bereits dabei ist sich "aufzulösen"? Ich dachte bisher, dass erst mit dem Aufruf von inherited destroy die Anwendung tatsächlich beendet wird?
Bin für jede Hilfe dankbar!
Gruß, Robert