Delphi-PRAXiS

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)

Mavarik 9. Okt 2013 12:10

XE5 und "veraltet"
 
noch einen...

Ich "liebe" die neue IDE...

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.

OK... Bin ja folgsam... An gefühlt 100 Stellen geändert...

Neuer Compiler lauf:

Fehler W1000 Symbol 'CharInSet' ist veraltet: 'Use TCharHelper functionality'

na Toll...

Also TCharHelper <F1> "Keine Hilfe für Kontext 1380 gefunden"

Mavarik

PS.: Mal abgesehen von 'Use... Englisch?!

pustekuchen 9. Okt 2013 12:19

AW: XE5 und "veraltet"
 
Tja ist schon traurig.

TCharHelper

Der schöne Günther 9. Okt 2013 12:26

AW: XE5 und "veraltet"
 
Verstehe ich jetzt nicht. Wäre es dir lieber gewesen, die hätten die alten Units mit Gewalt entfernt?

mkinzler 9. Okt 2013 12:33

AW: XE5 und "veraltet"
 
Zitat:

Zitat von Der schöne Günther (Beitrag 1231373)
Verstehe ich jetzt nicht. Wäre es dir lieber gewesen, die hätten die alten Units mit Gewalt entfernt?

Nein, aber wenn die Folgelösung, auf welche verwiesen ist auch schon obolet ist, könnte man gleich auf die Folge-Folgelöosung hinweisen

Mavarik 9. Okt 2013 12:33

AW: XE5 und "veraltet"
 
Zitat:

Zitat von Der schöne Günther (Beitrag 1231373)
Verstehe ich jetzt nicht. Wäre es dir lieber gewesen, die hätten die alten Units mit Gewalt entfernt?

Ne aber anstatt der 1. Fehlermeldung man sollte CharInSet nehmen direkt den Hinweis auf TCharHelper und nicht in einer Fehlermeldung noch auf eine Funktion verweisen die "schon" veraltet ist!

Der schöne Günther 9. Okt 2013 12:39

AW: XE5 und "veraltet"
 
Finde ich nicht unbedingt.

Variante 1 wird nicht mehr weiterentwickelt. Deprecated-Kommentar verweist sogar freundlicherweise auf Variante 2.

Jahre später. Variante 2 wird nicht mehr weiterentwickelt, Deprecated-Kommentar verweist sogar freundlicherweise auf Variante 3.

Muss der Entwickler von Variante 3 überhaupt um Variante 1 wissen? Fasst man Variante 1 jetzt wirklich noch einmal an, nur um den Deprecated-Kommentar von auf Variante 2 auf Variante 3 umzubiegen?

Uwe Raabe 9. Okt 2013 13:18

AW: XE5 und "veraltet"
 
Leute, habt ihr eigentlich keine wirklichen Probleme?

Mavarik 9. Okt 2013 13:31

AW: XE5 und "veraltet"
 
Mit Delphi?

Doch noch viel mehr!

jaenicke 9. Okt 2013 13:36

AW: XE5 und "veraltet"
 
Aktuell dieses:
http://qc.embarcadero.com/wc/qcmain.aspx?d=118951
Ich hoffe es gibt bald ein Update... Workarounds sind für die Endnutzer in einer Releaseversion immer doof. ;-)

Uwe Raabe 9. Okt 2013 13:59

AW: XE5 und "veraltet"
 
Zitat:

Zitat von jaenicke (Beitrag 1231401)
http://qc.embarcadero.com/wc/qcmain.aspx?d=118951
Ich hoffe es gibt bald ein Update...

Immerhin steht da schon mal Status: Resolved

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 14:31 Uhr.

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