Narses hat folgendes geschrieben : |
AFAIK gibt´s Überladung nur für Klassenmethoden, das ist aber eine Funktion aus einer Standard-Bibliothek. |
Das ist nicht richtig. Man kann auch einfache Funktionen und Prozeduren überladen.
Die Probleme sind hier andere:
Zunächst ist Abs keine Funktion, die direkt irgendwo in einer RTL-Unit definiert ist, sondern wird durch den Compiler per Compiler-Magic ergänzt. Deshalb kann sie auch verschiedene Typen als Parameter bekommen (siehe Syntaxergänzung).
Dazu kommt, dass die Originalfunktion auch mit Overload gekennzeichnet sein müsste um sie überladen zu können. Und sie kann nicht in einer anderen Unit stehen, wenn es sich nicht um eine Methode in einer Elternklasse, sondern eine einfache Funktion oder Prozedur handelt.
Du kannst die Funktion daher zwar definieren, aber nicht überladen. Die Originalfunktion ist über System.Abs nach wie vor erreichbar.
Deshalb stimmt
Narses Fazit:
Aus mehreren Gründen kann das direkt ohne irgendeinen Unitnamen vor der Funktion nicht funktionieren.