if S[i] in ['0'..'9'] then
Fehler W1050 Widechar in Set-Ausdrücken auf ByteChar verkürtzt. Ziehen Sie die Verwendung der Funktion 'CharInSet' aus der
Unit 'Sysutils' in Betracht.
Das ist doch schon der erste Fehler. Der Compiler generiert hierfür korrekten Code der auf WideChar-Basis (2 Byte) arbeitet. Solange das CharSet aus
ASCII Zeichen (also "<= #127") besteht, ist die Warnung bzw. der Fehler hinfällig. Und CharInSet() ist eine Performance-Krücke, ganz zu schweigen von TCharHelper.IsInArray, das der totale Abschuss von der Performance her ist, da zum einen ein Array on-the-fly erzeugt und dieses dann auch noch Iterativ (for-Schleife) durchlaufen wird. Und ich finde "C in ['0'..'9']" um einiges lesbarer als C.InArray(['0', '1', '2', '3', '4', '5', '6', '7', '8', '9'])"