System.SysUtils.Supports

提供: RAD Studio API Documentation
移動先: 案内検索

Delphi

function Supports(const Instance: IInterface; const IID: TGUID; out Intf): Boolean;
function Supports(const Instance: TObject; const IID: TGUID; out Intf): Boolean;
function Supports(const Instance: IInterface; const IID: TGUID): Boolean;
function Supports(const Instance: TObject; const IID: TGUID): Boolean;
function Supports(const AClass: TClass; const IID: TGUID): Boolean;

C++

extern DELPHI_PACKAGE bool __fastcall Supports(const System::_di_IInterface Instance, const GUID &IID, /* out */ void *Intf)/* overload */;

プロパティ

種類 可視性 ソース ユニット
function public
System.SysUtils.pas
System.SysUtils.hpp
System.SysUtils System.SysUtils

説明

指定したオブジェクトまたはインターフェースが、指定したインターフェースをサポートするかどうかを示します。

Supports 関数を呼び出すと、Instance で指定されたオブジェクトまたはインターフェース、あるいは AClass で指定されたクラスが IID パラメータで識別されるインターフェースをサポートしているかどうかを確認できます。Instance がインターフェースをサポートしている場合、Supports はそのインターフェースを Intf パラメータとして返し、true を返します。AClass がインターフェースをサポートしている場合、Supports はインターフェースを返しませんが、true は返します。IID で指定されたインターフェースがサポートされていない場合、Supports は false を返します。

Win32 プラットフォームで IID で指定されたインターフェースがサポートされているかどうかを確認するために、Supports は指定されたインターフェース(または指定されたオブジェクトのインターフェース)の QueryInterface メソッドを呼び出します。ただし、直接 QueryInterface メソッドを呼び出すのとは異なり、Supports では、インスタンスとして nil(Delphi)または NULL(C++)を渡すことができます。

.NET プラットフォームでは、Supports は .NET Framework の型キャスト機能を使用します。

警告

TClass によるインターフェースの実装を確認するオーバーロードは例外として、その他のすべてのSupports のバージョンは、インターフェース参照をオブジェクト、または別のインターフェース参照から抽出します。そのとき、ベースとなるオブジェクトの参照カウントがインクルメントされた後、(参照カウントをデクリメントしながら)そのインターフェースは解放され終了します。参照カウントがゼロのオブジェクトは、破棄されます。

var 
  Obj: TInterfacedObject;
begin
  Obj := TInterfacedObject.Create;
  if Supports(Obj, IInterface) then { ... at this point Obj will be freed }
end;

関連項目