2010-12-02 5 views
5

Admitir una aplicación escrita en Delphi 3 y me gustaría introducir algunas mejoras en el código fuente mientras espero la oportunidad de actualizarlo a una versión más reciente de Delphi. Una de las cosas que me gustaría usar es Interfaces. Sé Delphi 3 ya tiene el concepto de Interfaces pero estoy teniendo problemas para encontrar la manera de hacer el equivalente de¿Cuál es el equivalente en Delphi 3 de Soportes para interfaces?

if Supports(ObjectInstance, IMyInterface) then 
+3

eso envoltura para IUnknown.QueryInterface http://msdn.microsoft.com/en- us/library/ms682521 (VS.85) .aspx –

Respuesta

5

Escriba su propia implementación de la función "soportes". En Delphi 2009 puede utilizar

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; 

prueba:

procedure TForm4.Button3Click(Sender: TObject); 
var 
    Obj: TInterfacedObject; 

begin 
    Obj:= TInterfacedObject.Create; 
    if MySupports(Obj, IUnknown) then 
    ShowMessage('!!'); 
end; 

Esperamos que se puede trabajar en Delphi 3

+5

Aún mejor simplemente llamarlo Soporta y luego cuando avanza solo necesita eliminar la declaración y todo el código de llamada puede permanecer igual. –

Cuestiones relacionadas