Einzelnen Beitrag anzeigen

Benutzerbild von Stevie
Stevie

Registriert seit: 12. Aug 2003
Ort: Soest
4.009 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#10

AW: Überladen von Methoden kollidiert mit Funktionszeiger-Parameter (Anonyme Methode)

  Alt 23. Mai 2011, 16:16
Du kannst F auch direkt IntToStr zuweisen und das dann an die ToString Methode übergeben.
Wie schon erwähnt, kann der Compiler nunmal nicht wissen, ob du das Ergebnis von IntToStr oder die Funktion selber als reference übergeben möchtest, bzw er entscheidet sich für das Ergebnis des Aufrufes. Das ganze könnte gelöst werden, wenn man bei Aufruf von Routinen die Klammern zwingend erforderlich machen würde, dann könnte man daran erkennen, ob es ein Aufruf sein soll oder nicht. Geht aber nicht wegen Abwärtskompatibilität.

P.S.: Oder naja, man könnte diese Funktionalität zumindest an solchen Stellen einbauen. Somit würde der Compiler zuerst versuchen, die Routine als reference zu übergeben, falls eine überladene Version der Methode das unterstützt.

P.P.S.: Mach dir ne weitere Überladung mit TToStringFunc2 = function (Value: T): String; , die akzeptiert dann @IntToStr.
Stefan
“Simplicity, carried to the extreme, becomes elegance.” Jon Franklin

Delphi Sorcery - DSharp - Spring4D - TestInsight

Geändert von Stevie (23. Mai 2011 um 16:24 Uhr)
  Mit Zitat antworten Zitat