Che cosa è l'equivalente in Delphi 3 di supporti per Interfacce?
-
30-09-2019 - |
Domanda
I supporta un'applicazione scritta in Delphi 3 e vorrei mettere in alcuni miglioramenti al codice sorgente durante l'attesa per l'opportunità di aggiornarlo ad una nuova versione di Delphi. Una delle cose che mi piace usare è interfacce. So Delphi 3 ha già il concetto di interfacce, ma sto avendo problemi a trovare il modo di fare l'equivalente di
if Supports(ObjectInstance, IMyInterface) then
Soluzione
Scrivi la tua implementazione della funzione "sostiene". In Delphi 2009 è possibile utilizzare
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;
Prova:
procedure TForm4.Button3Click(Sender: TObject);
var
Obj: TInterfacedObject;
begin
Obj:= TInterfacedObject.Create;
if MySupports(Obj, IUnknown) then
ShowMessage('!!');
end;
La speranza che funzionerà in Delphi 3
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow