Frage

Ich habe eine Anwendung geschrieben in Delphi 3 unterstützen, und ich möchte in einigen Verbesserungen am Quellcode setzen, während auf die Gelegenheit warten sie auf eine neuere Version von Delphi zu aktualisieren. Eines der Dinge, die ich verwenden möchte ist Interfaces. Ich weiß, Delphi 3 bereits das Konzept der Schnittstellen hat, aber ich habe Probleme, herauszufinden, wie das Äquivalent von

zu tun
if Supports(ObjectInstance, IMyInterface) then
War es hilfreich?

Lösung

Schreiben Sie Ihre eigene Implementierung von „Unterstützt“ Funktion. In Delphi 2009 können Sie

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 es wird in Delphi arbeiten 3

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top