Ich habe diese Zeile:Satz von WideChar: Sets können höchstens 256 Elemente
const
MY_SET: set of WideChar = [WideChar('A')..WideChar('Z')];
Die oben nicht kompilieren, mit Fehler:
[Error] Sets may have at most 256 elements
Aber diese Linie ok nicht kompiliert:
var WS: WideString;
if WS[1] in [WideChar('A')..WideChar('Z')] then...
Und das stellt auch ok:
const
MY_SET = [WideChar('A')..WideChar('Z'), WideChar('a')..WideChar('z')];
...
if WS[1] in MY_SET then...
Warum ist das?
EDIT: Meine Frage ist, warum if WS[1] in [WideChar('A')..WideChar('Z')]
compiliert? und warum MY_SET = [WideChar('A')..WideChar('Z'), WideChar('a')..WideChar('z')];
kompiliert? Müssen sie nicht auch auf die set
Regeln angewendet werden?
Der zweite Code hat nur 26 Elemente. Viel einfacher zu verwenden> = und <= hier. Beachten Sie, dass Ihr Code nicht englische Zeichen nicht anerkennt. –
@David, Hat der erste Code nicht auch 26 Elemente? "Beachten Sie, dass Ihr Code nicht englische Zeichen nicht anerkennt." Ich muss gültige ISO-Zeichen überprüfen. Nur englische Zeichen sind gültig. – zig
Solange die Elemente selbst unter 256 sind, ist der zweite Ausdruck gültig. Der erste Ausdruck deklariert eine Menge, die größer als 256 ist (WideChar-Menge). –