Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Die Delphi-IDE (https://www.delphipraxis.net/62-die-delphi-ide/)
-   -   XE5 und "veraltet" (https://www.delphipraxis.net/176993-xe5-und-veraltet.html)

himitsu 9. Okt 2013 15:16

AW: XE5 und "veraltet"
 
Das Problem ist halt, daß ein SET nur bis zu 256 Werte enthalten kann.
Ein
Delphi-Quellcode:
Set of WideChar
hätte aber 65536 werte und das aucn nur, wenn man die Surrogates nicht beachtet, welche eigentlich aus 4 Bytes bestehen.

Technich hätte man es hier bei "diesem" IN, wo direkt das "SET" dahinter definiert ist, dieses wie ein CASE auswerten können, was dann viel mehr Möglichkeiten vieten würde.

jbg 9. Okt 2013 16:43

AW: XE5 und "veraltet"
 
Zitat:

Zitat von Mavarik (Beitrag 1231365)
Delphi-Quellcode:
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'])"

Uwe Raabe 9. Okt 2013 16:49

AW: XE5 und "veraltet"
 
Zitat:

Zitat von jbg (Beitrag 1231456)
Und ich finde "C in ['0'..'9']" um einiges lesbarer als C.InArray(['0', '1', '2', '3', '4', '5', '6', '7', '8', '9'])"

Du sollst ja auch
Delphi-Quellcode:
C.IsDigit
schreiben.

Der schöne Günther 9. Okt 2013 16:53

AW: XE5 und "veraltet"
 
Kleine Frage: In diesem Fall doch
Delphi-Quellcode:
myChar.isNumber()
oder? Digit schließt wohl auch Dinge wie Kommas mit ein, oder?

//Edit:

In der OH für System.Character.IsDigit (ACHTUNG DEPRECATED) findet man:
Zitat:

Die Definition von Digit und die Beziehung zu Number finden Sie unter
http://www.unicode.org/versions/Unic...04.pdf#G124206, The Unicode Standard, Version 5.2
In der empfohlenen Methode des TCharHelper steht davon leider nichts mehr.

Das ist der halbe Punkt meiner nur anderthalb Kritikpunkte an Embarcadero Delphi. Die Hilfe ist wirklich etwas durcheinander und nicht gerade fehlerfrei...

Uwe Raabe 9. Okt 2013 18:01

AW: XE5 und "veraltet"
 
Zitat:

Zitat von Der schöne Günther (Beitrag 1231459)
Kleine Frage: In diesem Fall doch
Delphi-Quellcode:
myChar.isNumber()
oder? Digit schließt wohl auch Dinge wie Kommas mit ein, oder?

Digit ist eine Untermenge von Number. Beides schließt aber das Komma nicht ein. Aber Digit ist auch nicht zwingend identisch mit 0..9!


Alle Zeitangaben in WEZ +1. Es ist jetzt 09:26 Uhr.
Seite 2 von 2     12   

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz