Einzelnen Beitrag anzeigen

Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.475 Beiträge
 
Delphi 12 Athens
 
#4

AW: Interface Methode als Parameter übergeben

  Alt 25. Jul 2022, 13:21
In der Funktion weißt du, dass "dieses" Interface die geünschte Funktion implementiert definiert und kannst sie demnach dort aufrufen.
Das funktioniert nur dann, wenn jedes Mal das gleiche Interface übergeben wird und intern immer dieselbe Funktion davon aufgerufen wird. Im diesem Fall hier klappt das nicht:
Delphi-Quellcode:
  Ergebnis1 := Rechenfunktion( EinString, EinInterfaceObjekt.DieFunktion);

  Ergebnis2 := Rechenfunktion( EinString, EinInterfaceObjekt.DieAndereFunktion);
Das Problem bei diesem Ansatz ist, dass Interface-Methoden anders implementiert sind als die in Klassen. Ein hässlicher Workaround wäre sowas:
Delphi-Quellcode:
type
  TMeineFunktion = reference to function( const Param: TJSONObject): TJSONObject;// of object;
...

function Rechenfunktion( const EinString: string; AFunc: TMeineFunktion): string;

...
  Ergebnis := Rechenfunktion( 'EinString',
    function( const Param: TJSONObject): TJSONObject
    begin
      result := EinInterfaceObjekt.DieFunktion(Param);
    end
    );
Wäre IMeinInterface eine Klasse, würde es so funktionieren:
Ergebnis := Rechenfunktion( 'EinString', EinInterfaceObjekt.DieFunktion);
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming

Geändert von Uwe Raabe (25. Jul 2022 um 13:23 Uhr)
  Mit Zitat antworten Zitat