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
Était-ce utile?

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
scroll top