Thema: Delphi Wer ruft destroy auf?

Einzelnen Beitrag anzeigen

iphi

Registriert seit: 13. Feb 2009
262 Beiträge
 
Delphi 7 Personal
 
#1

Wer ruft destroy auf?

  Alt 29. Jan 2014, 10:53
Hallo,

hier ein kleines Codebeispiel zu meinem Problem, welches bei Programmstart ein Objekt dynamisch erzeugt und bei Programmende wieder verschwinden lässt:

Hauptunit:
Delphi-Quellcode:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, Unit2;

type
  TForm1 = class(TForm)
    procedure FormCreate(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
  private
    { Private declarations }
    Test: TTest;
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
begin
Test:=TTest.create(self);
end;

procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
Test.Free;
end;

end.
Unit2:
Delphi-Quellcode:
unit Unit2;

interface

uses classes, Windows;

type
  TTest = class(TComponent)
  private
  public
    constructor
              create(AOwner : TComponent); overload;
    destructor
              destroy; overload;
  published
  end;

implementation

constructor TTest.Create(AOwner : TComponent);
begin
  writeln('creating');
  inherited create(AOwner);
end;

destructor TTest.Destroy;
begin
  inherited destroy;
  writeln('destroyed');
  sleep(1000);
end;

end.
Mein Destructor TTest.Destroy wird nie aufgerufen. Warum? Ich dachte, Test.Free bewirkt, dass der Destruktor von TTest aufgerufen wird.
  Mit Zitat antworten Zitat