Einzelnen Beitrag anzeigen

Apollonius

Registriert seit: 16. Apr 2007
2.325 Beiträge
 
Turbo Delphi für Win32
 
#6

Re: [FreePascal] Ereignisse an Komponenten knüpfen

  Alt 22. Jun 2008, 18:09
Es gibt aber das Problem, dass man TKlasse.Methode sowohl als Funktions- als auch als Methodenzeiger interpretieren kann, bei letzterem eben mit Instanz (manchmal wird das dann auch als gebundener Methodenzeiger bezeichnet, im Gegensatz zu dem, was ich oben Funktionszeiger genannt habe, was aber eigentlich ein ungebundener Methodenzeiger ist), und es nicht ganz einfach ist, da eine vernünftig unterscheidbare Syntax zu finden. Bei Delphi hat man sich eben für ein @ beim ungebundenen und kein @ beim gebundenen entschieden.
Besonders haarig wird es bei Klassenmethoden, die in Delphi ebenfalls gebunden und ungebunden auftauchen können - da könnte dann p := @TKlasse.Klassenmethode je nach dem Typen von p zwei verschiedene Bedeutungen haben, wenn nicht dass @ beim Methodenzeiger verboten wäre. Auf diese Weise hat man zwar ein anderes Problem am Hals, nämlich dann, wenn kein @ gegeben ist, aber aus dem Kontext sollte sich leicht ergeben, ob auf den Methodenzeiger oder das Ergebnis zurückgegriffen wird.
Wer erweist der Welt einen Dienst und findet ein gutes Synonym für "Pointer"?
"An interface pointer is a pointer to a pointer. This pointer points to an array of pointers, each of which points to an interface function."
  Mit Zitat antworten Zitat