5

我支持用 Delphi 3 编写的应用程序,我希望在等待机会将其升级到较新版本的 Delphi 时对源代码进行一些改进。我想使用的一件事是接口。我知道 Delphi 3 已经有了接口的概念,但我很难找出如何做相当于

if Supports(ObjectInstance, IMyInterface) then
4

1 回答 1

5

编写您自己的“支持”功能的实现。在 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 中工作

于 2010-12-02T10:58:41.340 回答