Einzelnen Beitrag anzeigen

Robert Marquardt
(Gast)

n/a Beiträge
 
#9

Re: Methodenzeiger in Funktionszeiger umwandeln

  Alt 30. Mai 2007, 13:02
Statische Methoden werden vom Compiler direkt in Funktionsaufrufe umgewandelt. wuppdi.narf(42) wird zu narf(wuppdi, 42), also Self wird als Parameter hinzugefuegt. Solange narf nun nicht auf Self zugreift geht alles gut.

Das was hier als Methodenzeiger bezeichnet wurde ist einfach ein TMethod-Record. Da liegt auch der Ansatzpunkt.
Delphi-Quellcode:
  TMethod = record
    Code, Data: Pointer;
  end;
In Code ist der Zeiger auf die Funktion enthalten, waehrend Data Self enthaelt. Man sollte also TAusgabe zu einem TMethod umtypen koennen und dann eine Funktion zuweisen koennen. Bediungung ist natuerlich das die Funktion wie TAusgabe plus Self-Parameter deklariert ist.
Irgendwie macht das alles aber keinen Sinn. Man kann doch eine class function deklarieren und dann braucht man keine Instanz des Objektes mehr.
  Mit Zitat antworten Zitat