5
我支持用Delphi 3编写的应用程序,我希望在对等待机会升级到更新版本的Delphi的同时对源代码进行一些改进。我想要使用的一件事是接口。我知道德尔福3已经有接口的概念,但我很难找到如何做相当于Delphi 3支持接口的等价物是什么?
if Supports(ObjectInstance, IMyInterface) then
我支持用Delphi 3编写的应用程序,我希望在对等待机会升级到更新版本的Delphi的同时对源代码进行一些改进。我想要使用的一件事是接口。我知道德尔福3已经有接口的概念,但我很难找到如何做相当于Delphi 3支持接口的等价物是什么?
if Supports(ObjectInstance, IMyInterface) then
写你自己的“支持”功能的实现。德尔福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
更好地称之为支持,然后当您向前移动时,您只需删除声明,并且所有调用代码都可以保持不变。 – 2010-12-02 16:02:33
这就是包装的IUnknown.QueryInterface http://msdn.microsoft.com/en- us/library/ms682521(VS.85).aspx – 2010-12-02 10:27:40