Einzelnen Beitrag anzeigen

jbg

Registriert seit: 12. Jun 2002
3.483 Beiträge
 
Delphi 10.1 Berlin Professional
 
#12

AW: XE5 und "veraltet"

  Alt 9. Okt 2013, 17:43
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'])"
  Mit Zitat antworten Zitat