Kleine Ergänzung:
Einige Zahlen außerhalb des Long-Bereichs werden nicht zurückgewiesen sondern falsch konvertiert. Die Abfrage
Code:
if (Result > (High(Result) div 10)) or (not (s[I] in ['0'..'9'])) then
greift erst ab dem Wert 2147483650, der Long-Bereich ist aber [-21474836
48..21474836
47].
Borland hat dies in der Systemroutine _ValLong (im Assembler-Teil!) durch eine Abfrage des Overflow-Flags kompensiert.
Der Fehler tritt aber lediglich an den Intervallrändern auf und dürfte nur für die Anwendungsfälle interessant sein, in denen der Long-Bereich
exakt abgedeckt werden soll.
Gruß Hawkeye