0

私のカスタムコントロールには親へのポインターがありますが、デストラクタでそれらのポインターを解放する方法がわかりません。

変数:

{Pointers}
  Form: TForm;
  GeneralPointer: Pointer;
  Frame: ^TImage;

コンストラクター:

constructor TViOS.Create(var ImageOutput: TImage);
begin
inherited Create;

  Form := TForm(GetParentForm(TControl(ImageOutput)));
  GeneralPointer := Addr(ImageOutput);
  Frame := GeneralPointer;
...
4

2 に答える 2

3

コンストラクタでオブジェクトを作成していないので、デストラクタでオブジェクトを作成する必要はありません。オブジェクトFreeをnilに設定するだけです。

destructor TViOS.Destroy;
begin
  Form := nil;
  GeneralPointer := nil;
  Frame := nil;
end;
于 2012-10-06T06:47:06.277 に答える
0

他の人が言ったことに加えて、あなたのコードはいくつかのクリーンアップを使用することができます:

Form: TForm;
GeneralPointer: Pointer;
Frame: TImage;

constructor TViOS.Create(ImageOutput: TImage);
begin
  inherited Create;
  Form := GetParentForm(ImageOutput) as TForm;
  GeneralPointer := ImageOutput;
  Frame := ImageOutput;
  ...
end;
于 2012-10-06T17:48:00.870 に答える