就像Java里的InstanceOf一样的效果。
我拥有的是一个TObject,不是TInterfaceObject。
我想要判断这个TObject是否具有IDispatch接口,该如何做?
TObject.GetInterface()好像不起作用。

解决方案 »

  1.   

    刚去 TObject的定义看了看 好像也没有类似的 或者我不知道 :)function ClassType: TClass;
    class function ClassNameIs(const Name: string): Boolean;
        class function ClassParent: TClass;
        class function ClassInfo: Pointer;class function InheritsFrom(AClass: TClass): Boolean; // *
        class function MethodAddress(const Name: ShortString): Pointer; // *
        function FieldAddress(const Name: ShortString): Pointer;
        function GetInterface(const IID: TGUID; out Obj): Boolean;UP.
      

  2.   

    var
      aIEditor: IEditor;
    begin
      if ObjectA.GetInterface(IEditor, aIEditor) then
        aIEditor.XXX;
    end;
      

  3.   

    TObject.GetInterface()就可以啊,前面一个参数要用GUID,帮助里说用接口名称可以,不过,我发现有时候不行。
      

  4.   

    补充,接口的GUID一般都做为共有的Const存在,如IID_IDispatch.