5

私はDelphi3で作成されたアプリケーションをサポートしており、新しいバージョンのDelphiにアップグレードする機会を待っている間、ソースコードにいくつかの改善を加えたいと思います。私が使いたいものの1つはインターフェースです。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;

Delphi3で動作することを願っています

于 2010-12-02T10:58:41.340 に答える