Witam. Jest prośba o sprawdzenie prostego kodu jedna forma główna i dwie gołe klasy.
W załączniku kod pod Delphi 2007.
-
W załączniku jest tez plik exe, dajcie proszę znać czy u was antywirus też pokazuje że plik jest zagrożony. Nie wiem co się dzieje ale przy innych kompilacjach Antywirus nic nie sygnalizuje a tutaj uparcie mnie ostrzega już w czasie kompilacji.
-
W załączonym kodzie próbuję wyłączyć program w klasie podrzędnej i sprawdzam czy działają wszystkie funkcje Destroy. Chce się upewnić ze nie ma "wycieków" ale nie pokazuje się żaden komunikat zamieszczony w Destroy.
Formy głównej nie używam u siebie .. tutaj tylko podpiąłem żeby wywołać Application.Terminate;
używam w głównym module:
Unit1;
...
procedure TForm1.BtnExitClick(Sender: TObject);
begin
kAp.Terminate;
end;
procedure Main();
begin
Application.ShowMainForm := True; // False; // ukrywa forme główną (mainform)
if kAp <> nil then FreeAndNil(kAp);
kAp:= TkAp.Create;
kAp.Init;
// Form1.Show;
end;
procedure MainFree();
begin
kAp.Free;
end;
initialization
// MessageBox(0, 'Rozpoczynamy pracę z modułem...', 'OK', MB_OK);
Main();
finalization
// MessageBox(0, 'Kończymy pracę z modułem...', 'OK', MB_OK);
MainFree();
unit Unit2;
interface
uses
Unit3,
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs;
type
TkAp = class
private
protected
public
constructor Create();
destructor Destroy();override;
function Init(): Boolean;
function Terminate: Boolean;
end;
var
kAp: TkAp;
implementation
constructor TkAp.Create();
begin //
if kClass3 <> nil then FreeAndNil(kClass3);
kClass3:= TkClass3.Create;
end;
destructor TkAp.Destroy();
begin //
ShowMessage('TkAp.Destroy');
FreeAndNil(kClass3);
end;
function TkAp.Init(): Boolean;
begin //
// Result:= False;
Result:= True;
end;
function TkAp.Terminate: Boolean;
begin //
kClass3.Terminate;
Result:= True;
end;
end.
unit Unit3;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs;
type
TkClass3 = class
private
protected
public
constructor Create();
destructor Destroy();override;
function Init(): Boolean;
function Terminate: Boolean;
end;
var
kClass3: TkClass3;
implementation
constructor TkClass3.Create();
begin //
end;
destructor TkClass3.Destroy();
begin //
ShowMessage('TkClass3.Destroy');
end;
function TkClass3.Init(): Boolean;
begin //
Result:= True;
end;
function TkClass3.Terminate: Boolean;
begin //
Application.Terminate;
Result:= True;
end;
end.
Kod uprościłem prawie do maximum.. Albo coś przeoczyłem albo system i kompilator do przeinstalowania :) Pozdrawiam.
- delphi1.zip (253 KB) - ściągnięć: 97