AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Methodpointer - wie funktioniert's?

Ein Thema von yankee · begonnen am 3. Feb 2007 · letzter Beitrag vom 4. Feb 2007
 
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
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:00 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz