追蹤
跟著傑森去旅行
關於部落格
一位熱愛旅行、拍照和嚐美食的玩家,跟你一同分享生活中有趣的發現。
  • 32208

    累積人氣

  • 0

    今日人氣

    1

    追蹤人氣

dispinterface是什麼

现在我们再来看 dispinterface 是什么
  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;
注意看后面的 dispid xx, 这个实际就是用于调用 Invoke 中 DispId 的参数
很显然, 没实现 IDispatch 的接口是不能用 dispinterface 的
不是很显然的是, dispinterface 实际上并不是接口, 它不能用于实现, dispinterface 只是一个对接口的描述表,

知道了上面的原理后得出, 任何实现了 IDispatch 的接口都可以定义一个 dispinterface 纯描述文件, 任何 IDispatch 实现类都可以 as 成 dispinterface(是不是相同就你自已认定了)

实现一个可远程的 stringlist 类只要自已申明并实现一个 IStringList = IDispatch, delphi 实现为 IStringsAdapter, 而不是 IStringsDisp, IStringsDisp 只是描述了 IStringsAdaper 的函数的 disp id
相簿設定
標籤設定
相簿狀態