加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

在支持接口的Delphi 3中有什么相同之处?

发布时间:2020-12-15 09:27:38 所属栏目:大数据 来源:网络整理
导读:我支持用Delphi 3编写的应用程序,我想在等待有机会将其升级到更新版本的Delphi时对源代码进行一些改进.我想要使??用的一件事是Interfaces.我知道Delphi 3已经有了Interfaces的概念,但是我很难找到如何做等效的 if Supports(ObjectInstance,IMyInterface) the
我支持用Delphi 3编写的应用程序,我想在等待有机会将其升级到更新版本的Delphi时对源代码进行一些改进.我想要使??用的一件事是Interfaces.我知道Delphi 3已经有了Interfaces的概念,但是我很难找到如何做等效的

if Supports(ObjectInstance,IMyInterface) then

解决方法

编写自己的“支持”功能实现.在Delphi 2009中,您可以使用

function MySupports(const Instance: TObject; const IID: TGUID): Boolean;
var
  Temp: IInterface;
  LUnknown: IUnknown;
begin
  Result:= (Instance <> nil) and
           ((Instance.GetInterface(IUnknown,LUnknown)
             and (LUnknown.QueryInterface(IID,Temp) = 0)) or
            Instance.GetInterface(IID,Temp));
end;

测试:

procedure TForm4.Button3Click(Sender: TObject);
var
  Obj: TInterfacedObject;

begin
  Obj:= TInterfacedObject.Create;
  if MySupports(Obj,IUnknown) then
    ShowMessage('!!');
end;

希望它能在Delphi 3中运行

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读