【发布时间】:2016-06-21 05:31:06
【问题描述】:
我有这行:
const
MY_SET: set of WideChar = [WideChar('A')..WideChar('Z')];
上面没有编译,报错:
[错误] 集合最多可以有 256 个元素
但是这一行确实可以编译:
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...
为什么会这样?
编辑:我的问题是为什么 if WS[1] in [WideChar('A')..WideChar('Z')] 编译?为什么MY_SET = [WideChar('A')..WideChar('Z'), WideChar('a')..WideChar('z')]; 编译?他们不是也需要申请set 规则吗?
【问题讨论】:
-
第二个代码只有 26 个元素。在这里使用 >= 和
-
@David,第一个代码不是也有 26 个元素吗? “请注意,您的代码不承认非英文字符。”我需要检查有效的 ISO 字符。只有英文字符有效。
-
只要元素本身低于 256,第二个表达式就有效。第一个表达式声明了一个大于 256 的集合(WideChar 集合)。
-
第一个示例中的值有 26 个元素,但类型有更多。不要在这里使用集合。使用不等式运算符。