Quel est l'équivalent en Delphi 3 Prise en charge pour les interfaces?
-
30-09-2019 - |
Question
Je soutiens une demande écrite en Delphi 3 et je voudrais mettre quelques améliorations au code source en attendant la possibilité de mettre à niveau vers une version plus récente de Delphi. L'une des choses que je voudrais utiliser est Interfaces. Je sais que Delphi 3 a déjà le concept d'interfaces, mais je ne parviens pas à trouver comment faire l'équivalent de
if Supports(ObjectInstance, IMyInterface) then
La solution
Écrivez votre propre implémentation de la fonction « Supports ». En Delphi 2009, vous pouvez utiliser
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;
Test:
procedure TForm4.Button3Click(Sender: TObject);
var
Obj: TInterfacedObject;
begin
Obj:= TInterfacedObject.Create;
if MySupports(Obj, IUnknown) then
ShowMessage('!!');
end;
Hope il travaillera en Delphi 3
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow