Carlo91 hat folgendes geschrieben : |
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8:
| var cb: procedure (data: String) of Object; begin @cb :=Nil; @cb :=MethodAddress('clickbtn'); if (@cb <> Nil) then begin cb('test'); | |
Das Problem ist ganz einfach:
Du holst dir die Adresse, dir fehlt aber der zweite Zeiger, nämlich der zu den Daten sprich deinem Objekt.
Denn wie der Name dieser Klassenmethode bereits sagt bekommst du nur die Adresse der Methode, mehr nicht. Das heißt du musst das ganze z.B. in eine TMethod Variable packen und dort zusätzlich zu der Codeadresse, die du über MethodAdress bekommst, auch noch den Datenpointer, also den Objektpointer ausfüllen.
Dann kannst du auch auf Daten des Objekts zugreifen.
// EDIT:
Was schreib ich hier eigentlich, steht doch alles in der Dokumentation...
docwiki.embarcadero....Object.MethodAddress