Einzelnen Beitrag anzeigen

Benutzerbild von yankee
yankee

Registriert seit: 10. Mär 2004
1.134 Beiträge
 
Lazarus
 
#3

Re: Methodpointer - wie funktioniert's?

  Alt 3. Feb 2007, 16:44
Zitat von Der_Unwissende:
Hi,
was genau stellst Du Dir denn vor?
Ich meine klar, Du möchtest Die Adresse einer Methode, aber warum?
Ich habe mir einen kleinen Matheparser gebastelt. Der soll natürlich auch Funktionen wie sinus usw. aufrufen können. Also muss ich einem String eine Funktion zuordnen.
Das mache ich mit dem Dictionary, welches ich unter dem Titel "Hash-tabellen" in der Code-lib gefunden habe . Dadrin speicher ich dann immer einen Pointer auf die zugehörige Funktion.
Zitat von Der_Unwissende:
Erstmal vorweg, Methodenzeiger sind typisierte Zeiger, die auf eine Methode mit bestimmter Signatur zeigen. Du könntest z.B. mit
Delphi-Quellcode:
type
  methodpointer = function (arg: String): Boolean of Object;
einen Datentypen erzeugen, dem Du dann auch wirklich (und ohne Probleme) die Adresse der Funktion zuweisen kannst.
Ich habe meine Funktion schon so im type-Bereich deklariert und wenn ich dann die Funktion wieder aufrufe, dann caste ich den Pointer auch zurück:
methodenpointer(p)(args);
Was auch astrein funktioniert, solange es sich um eine Funktion und nicht um eine Methode handelt.
Zitat von Der_Unwissende:
Für deinen Fall klappt das einfach nicht, da Delphi hier nicht weiß, dass Du dich auf die Adresse der Funktion und nicht auf die Adresse des Funktionsergebnisses beziehst.
Wenn delphi das mit Funktionen kann... Muss es doch auch irgendwie mit Methoden gehen, oder?[]
Zitat von Der_Unwissende:
Ein anderes Problem dass Du hier hättest liegt in der Überladung einer Methode. Was soll dein Code liefern, wenn ich deine Klasse um folgendes erweiter?:
Ja, dass macht natürlich Sinn...
Aber auch das muss man doch irgendwie lösen können... Wie gesagt: Mit einfachen Funktionen, die keine Methoden sind, klappt es ja auch...
Zitat von Der_Unwissende:
Wie gesagt, eigentlich ist hier wichtiger zu wissen warum Du überhaupt nach Methodenzeigern suchst (und hast Du die Forensuche mal benutzt? )
Ja... Hab gesucht . Aber nichts dazu gefunden (.
Letzter Tipp: Drogen. Machen zwar nicht glücklich, geben einem aber wenigstens das Gefühl glücklich zu sein.

Have a lot of fun!
  Mit Zitat antworten Zitat