私はDelphi3で作成されたアプリケーションをサポートしており、新しいバージョンのDelphiにアップグレードする機会を待っている間、ソースコードにいくつかの改善を加えたいと思います。私が使いたいものの1つはインターフェースです。Delphi 3にはすでにインターフェイスの概念があることは知っていますが、同等の方法を見つけるのに苦労しています。
if Supports(ObjectInstance, IMyInterface) then
私はDelphi3で作成されたアプリケーションをサポートしており、新しいバージョンのDelphiにアップグレードする機会を待っている間、ソースコードにいくつかの改善を加えたいと思います。私が使いたいものの1つはインターフェースです。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;
Delphi3で動作することを願っています