我支持一个使用Delphi 3编写的应用程序,我想在等待升级到新版本的Delphi的机会时,在源代码中进行一些改进。其中我想使用的一项是接口。我知道Delphi 3已经有了接口的概念,但我不知道如何做相当于:
if Supports(ObjectInstance, IMyInterface) then
我支持一个使用Delphi 3编写的应用程序,我想在等待升级到新版本的Delphi的机会时,在源代码中进行一些改进。其中我想使用的一项是接口。我知道Delphi 3已经有了接口的概念,但我不知道如何做相当于:
if Supports(ObjectInstance, IMyInterface) then
编写自己的“Supports”函数实现。在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中工作