我支持用 Delphi 3 编写的应用程序,我希望在等待机会将其升级到较新版本的 Delphi 时对源代码进行一些改进。我想使用的一件事是接口。我知道 Delphi 3 已经有了接口的概念,但我很难找出如何做相当于
if Supports(ObjectInstance, IMyInterface) then
我支持用 Delphi 3 编写的应用程序,我希望在等待机会将其升级到较新版本的 Delphi 时对源代码进行一些改进。我想使用的一件事是接口。我知道 Delphi 3 已经有了接口的概念,但我很难找出如何做相当于
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 中工作