System.SysUtils.Supports

De RAD Studio API Documentation
Aller à : navigation, rechercher

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 */;

Propriétés

Type Visibilité  Source Unité  Parent
function public
System.SysUtils.pas
System.SysUtils.hpp
System.SysUtils System.SysUtils

Description

Indique si un objet ou une interface donnée gère une interface spécifiée.

Appelez Supports pour déterminer si l'objet ou l'interface spécifiée par Instance, ou la classe spécifiée par Aclass, gère l'interface identifiée par le paramètre IID. Si Instance gère cette interface, Supports la renvoie comme paramètre Intf et renvoie True. Si Aclass gère l'interface, Supports ne renvoie aucune interface, mais renvoie quand même True. Si l'interface spécifiée par IID n'est pas gérée, Supports renvoie False.

Sur la plate-forme Win32, pour déterminer si l'interface spécifiée par IID est gérée, Supports appelle la méthode QueryInterface de l'interface fournie (ou l'interface de l'objet fourni). Cependant, à l'inverse de l'appel direct de QueryInterface, Supports vous permet de passer en instance une valeur nil (Delphi) ou NULL (C++).

Sur la plate-forme .NET, Supports utilise les fonctionnalités de transtypage du .NET framework.

Avertissement

A l'exception de la surcharge qui vérifie si TClass implémente une interface, toutes les autres versions de Supports vont extraire une référence d'interface à partir d'un objet ou d'une autre référence d'interface, en causant l'incrémentation du compteur de références de l'objet dépendant, puis vont libérer l'interface à la sortie (en décrementant le compteur de références). Si le compteur de références d'un objet atteint zéro, l'objet sera détruit.

var 
  Obj: TInterfacedObject;
begin
  Obj := TInterfacedObject.Create;
  if Supports(Obj, IInterface) then { ... à ce moment, Obj sera libéré }
end;

Voir aussi