System.SysUtils.Supports
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;