DELPHI FAQ: Как можно работать с объектами не заботясь об их разрушении?


Как можно работать с объектами не заботясь об их разрушении?
Previous  Home  Next




Вначале сделаем интерфейс для нашего объекта:

type

  IAutoClean = interface

    ['{61D9CBA6-B1CE-4297-9319-66CC86CE6922}'
]
  end
;

  TAutoClean = class
(TInterfacedObject, IAutoClean)
  private

    FObj: TObject;
  public

    constructor
 Create(AObj: TObject);
    destructor
 Destroy; override;
  end
;

implementation


constructor
 TAutoClean.Create(AObj: TObject);
begin

  FObj := AObj;
end
;

destructor
 TAutoClean.Destroy;
begin

  FreeAndNil(FObj);
  inherited
;
end
;

А теперь будем использовать его вместо объекта:

procedure TForm1.Button1Click(Sender: TObject);
var

  a: IAutoClean;
    //must declare as local variable, so when this procedure finished, it's out of scope

  o: TOpenDialog; //any component

begin

  o := TOpenDialog.Create(self);
  a := TAutoClean.Create(o);
  if
 o.Execute then
    ShowMessage(o.FileName);
end
;

Взято с Delphi Knowledge Base
http://www.baltsoft.com/







DELPHI FAQ




EOMY TOP 100      Рейтинг@Mail.ru      Rambler's Top100