Einzelnen Beitrag anzeigen

Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.063 Beiträge
 
Delphi 12 Athens
 
#19

AW: Dateien verschlüssen mit Wolgang Ehrhardts Crypt-Units

  Alt 17. Dez 2020, 13:53
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
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.

Geändert von himitsu (17. Dez 2020 um 14:01 Uhr)
  Mit Zitat antworten Zitat