Einzelnen Beitrag anzeigen

Der_Unwissende

Registriert seit: 13. Dez 2003
Ort: Berlin
1.756 Beiträge
 
#2

Re: Methodpointer - wie funktioniert's?

  Alt 3. Feb 2007, 15:30
Zitat von yankee:
folgender Code:
Delphi-Quellcode:
begin
  t :=test.Create;
  p :=@test.tut; //Compilerfehler: Variable required
  p :=@NichtMethode; //funktioniert.
end;
Wenn ich bei dieser Konstruktion doStuff aufrufe, klappt das nicht ganz so, wie ich mir das vorstelle...
Wieso? Wie macht man's richtig?
Hi,
was genau stellst Du Dir denn vor?
Ich meine klar, Du möchtest Die Adresse einer Methode, aber warum?
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. 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. 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?:

Delphi-Quellcode:
function test.tut:Boolean;
begin
  result :=true;
end;
Wird jetzt die Adresse von Deiner oder meiner Funktion in p gespeichert? Bei dem Datentypen wird dies eindeutig Durch die Signatur festgelegt.
Wie gesagt, eigentlich ist hier wichtiger zu wissen warum Du überhaupt nach Methodenzeigern suchst (und hast Du die Forensuche mal benutzt? )

Gruß Der Unwissende
  Mit Zitat antworten Zitat