У меня есть эта строка:набор WideChar: Наборы могут иметь не более 256 элементов
const
MY_SET: set of WideChar = [WideChar('A')..WideChar('Z')];
выше не компилируется с ошибкой:
[Error] Sets may have at most 256 elements
Но эта линия компилируется нормально:
var WS: WideString;
if WS[1] in [WideChar('A')..WideChar('Z')] then...
И это также компилирует ОК:
const
MY_SET = [WideChar('A')..WideChar('Z'), WideChar('a')..WideChar('z')];
...
if WS[1] in MY_SET then...
Почему?
EDIT: Мой вопрос почемуif WS[1] in [WideChar('A')..WideChar('Z')]
компилирует? и почему компилируется MY_SET = [WideChar('A')..WideChar('Z'), WideChar('a')..WideChar('z')];
? не должны ли они также применяться к правилам set
?
Второй код имеет только 26 элементов. Намного проще использовать> = и <= здесь. Обратите внимание, что ваш код не распознает неанглийских символов. –
@ Давид, не первый код имеет также 26 элементов? «Обратите внимание, что ваш код не распознает неанглийских символов». Мне нужно проверить допустимые символы ISO. действительны только английские символы. – zig
Пока элементы сами находятся ниже 256, действует второе выражение. Первое выражение объявляет набор размером более 256 (набор WideChar). –