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 回答