простой пример проверить освобождение объекта:
Код:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TMyStringList = class(TStringList)
public
destructor Destroy; override;
end;
TForm1 = class(TForm)
Memo1: TMemo;
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
{ TMyStringList }
destructor TMyStringList.Destroy;
begin
Windows.Beep(1000, 100);
inherited Destroy;
end;
function Test: TStrings;
begin
Result:=TMyStringList.Create;
Result.Add('Test');
end;
procedure TForm1.FormCreate(Sender: TObject);
var
t: TStrings;
begin
t:=Test;
Memo1.Lines.Assign(t);
t.Free;
end;
end.
суть примера:
-объявляем наследника TStringList
-реализуем у него только destructor
-функция создает и возвращает наш объект
-в Destroy ставим точку останова, если нет бипера
-запускаем и наслаждаемся остановкой на точке