0

我正在编写一个类来控制和处理设备的输入和输出。部分 I/O 将通过串行端口进行,为此我使用了 Comport 库(Tcomport,Dejan Crnila)。Tcomport 和 TcomDataPacket 组件被声明为 TComponent 后代。

然后将我自己的类声明为:

  1. 一个简单的类( TThingy = 类)
  2. 一个组件(TThingy = 类(TComponent)

如果是 1),我应该将什么传递给 TComPort.create 调用?目前我打算手动处理实例的创建和释放。

4

1 回答 1

4
  • 如果您希望用户能够将其中一个组件放到表单上,或者允许使用该TComponent机制处理所有权,那么从TComponent.
  • 否则,派生自TObject

创建框架Owner时指定一个是可选的。TComponent如果你想退出,那么只需传递nil给 a 的构造函数TComponent。当你这样做时,你就获得了组件的所有权,Free当你完成它时调用它是你的工作。

所以,我怀疑你想做的是像这样声明你的类:

type
  TThingy = class
  private
    FComport: TComport;
  public
    constructor Create;
    destructor Destroy; override;
  end;

....

constructor TThingy.Create;
begin 
  inherited;
  FComport := TComport.Create(nil);
end;

destructor TThingy.Destroy;
begin
  FComport.Free;
  inherited;
end;
于 2013-02-17T13:31:14.800 回答