Du hast eine Class-Procedure und da es dort keine "Instanz" gibt, hast du da auf Process garkeinen Zugriff.
Und nochmals, hier gibt man eine Interface-"Instanz" rein und keinen "Methoden"-Zeiger. (bei meinem Beispiel mit TForm1 also Form1 bzw. Self)
Du brauchst also erstmal ein Objekt und das muß erzeugt worden sein (Create).
Es wird die Instanz reingegeben und was aufgerufen wird (Process), darum kümmert sich das Interface (IDECProgress).
Callback-Interfaces sind nichts Besonderes und sie sind auch erfolgreich/problemlos sehr weit verbreitet.
Klar, da hier (aktuell) nur eine Methode drin steckt, sieht es "unpraktisch" aus, aber das ändert sich schnell, sobald es etwas "komplexer" wird.
Nur ein Zeiger für mehrere Ereignisse:
Delphi-Quellcode:
type
IComplexProgress = interface
procedure Start(const Min, Max: Int64);
procedure Process(const Pos: Int64; var Cancel: Boolean);
procedure Stop;
procedure Error(const Message: string);
end;
Beschweren wird sich auch immer wer, da es nie Jedem gerecht gemacht werden kann, bei all den Möglichkeiten.
* Callback-Objekt (interface ODER class)
* Prozedur (procedure ODER class procedure static)
* Methode (procedure of object)
* anonyme Methode ODER die beiden Vorherrigen (reference to procedure), aber dafür kann man diese Zeiger "oft" garnicht vergleichen