Delphi 系統[29]關鍵字和保留字 dispinterface、dispid
阿新 • • 發佈:2021-08-16
Delphi 系統[29]關鍵字和保留字 dispinterface、dispid
1、定義:
- dispinterface :用於宣告一個特定的介面卡介面, 這個介面卡能夠接受標準系統介面中傳入傳出的資料。用 DispInterface 宣告的介面不能被繼承,只能夠被引用。DispInterface 方法只能呼叫,並且必須被動態繫結。可以通過 DispId 為介面內方法分配適配序號。DispInterface 僅能用於 Windows 平臺, 如果在 Linux下進行開發, 則此關鍵字會自動被系統遮蔽。
- dispid :DispInterface 介面中,用於指定特定的適配序號。在 DispInterface介面中, 適配序號必須是唯一的。如果不指定 DispId,則系統會自動分配適配序號給介面內每一個方法,可以通過適配序號訪問 DispInterface 介面中的方法。
2、示例:
type IStringsDisp = dispinterface ['{EE05DFE2-5549-11D0-9EA9-0020AF3D82DA}'] property ControlDefault[Index: Integer]: Olevariant dispid 0; default; function Count: Integer; dispid 1; property Item[Index: Integer]: Olevariant dispid 2; procedure Remove(Index: Integer); dispid 3; procedure Clear; dispid 4; function Add(Item: Olevariant): Integer; dispid 5; function _NewEnum: IUnknown; dispid - 4; end;
3、關於dispinterface 和 dispid 的一些說明:
分派介面型別定義自動化物件通過IDispatch實現的方法和屬性。對分派介面方法的呼叫在執行時通過IDispatch的Invoke方法進行路由;類不能實現分派介面。
分派介面型別宣告的形式為:
type interfaceName = dispinterface
['{GUID}']
memberList
end;
其中['{GUID}']是可選的,memberList由屬性和方法宣告組成。分派介面宣告類似於常規介面宣告,但它們不能指定祖先。例如:
type IStringsDisp = dispinterface ['{EE05DFE2-5549-11D0-9EA9-0020AF3D82DA}'] property ControlDefault[Index: Integer]: OleVariant dispid 0; default; function Count: Integer; dispid 1; property Item[Index: Integer]: OleVariant dispid 2; procedure Remove(Index: Integer); dispid 3; procedure Clear; dispid 4; function Add(Item: OleVariant): Integer; dispid 5; function _NewEnum: IUnknown; dispid -4; end;
3.1 分派介面方法(僅限Windows)
分派介面的方法是對底層IDispatch實現的Invoke方法進行呼叫的原型。要為方法指定自動化分派ID,請在其宣告中包含dispid指令,後跟整數常量;指定已使用的ID會導致錯誤。
分派介面中宣告的方法不能包含dispid以外的指令。引數和結果型別必須是自動的——也就是說,它們必須是Byte、Currency、Real、Double、Longint、Integer、Single、Smallint、AnsiString、WideString、TDateTime、Variant、OleVariant、WordBool或任何介面型別。
3.2 分派介面屬性
分派介面的屬性不包括訪問說明符。它們可以宣告為只讀或只讀。要為屬性指定分派ID,請在其宣告中包含dispid指令,後跟整數常量;指定已使用的ID會導致錯誤。陣列屬性可以宣告為預設值。分派介面屬性宣告中不允許使用其他指令。
建立時間:2021.08.16 更新時間:
部落格園 滔Roy https://www.cnblogs.com/guorongtao 希望內容對你所有幫助,謝謝!