2013-02-17 27 views
0

我正在編寫一個要控制和處理輸入和輸出到設備的類。部分I/O將通過串口進行,爲此我使用Comport庫(Tcomport,Dejan Crnila)。 Tcomport和TcomDataPacket組件被聲明爲TComponent的後繼者。聲明包含非可視組件的類

是更好地然後聲明我自己的類如:

  1. 一個簡單的類(TThingy = A類)
  2. 的組件(TThingy = A類(TComponent)

如果1) ,我應該傳遞給TComPort.create調用?目前我打算處理創建和手動釋放實例。

回答

4
  • 如果你希望用戶能夠刪除這些組件之一到形式,或允許所有權使用TComponent機制來處理,然後從TComponent派生。
  • 否則,從TObject派生。

創建TComponent框架時指定Owner是可選的。如果您想退出,只需將nil傳遞給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; 
+1

+1。根據問題的最後一行,它是一個「TObject」。 – 2013-02-17 13:32:31