gpt4 book ai didi

delphi - WideChar 集 : Sets may have at most 256 elements

转载 作者:行者123 更新时间:2023-12-03 14:46:35 31 4
gpt4 key购买 nike

我有这一行:

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...

这是为什么?

编辑:我的问题是为什么 if WS[1] in [WideChar('A')..WideChar('Z')]编译?为什么 MY_SET = [WideChar('A')..WideChar('Z'), WideChar('a')..WideChar('z')]; 编译?他们不是也需要应用set规则吗?

最佳答案

有效的集合必须遵守两个规则:

  1. 集合中每个元素的序数值必须小于 256。
  2. 该集合的元素不得超过 256 个。
MY_SET: set of WideChar = [WideChar('A')..WideChar('Z')];

此处声明了一个集合类型(Set of WideChar),其元素超过 256 个 -> 编译器错误。

if WS[1] in [WideChar('A')..WideChar('Z')]

在这里,编译器将 WideChar('A') 视为序数值。该值和集合中的所有其他值都低于 256。这符合规则 1。

唯一元素的数量也在限制内 (Ord('Z')-Ord('A')+1),因此第二条规则通过。

MY_SET = [WideChar('A')..WideChar('Z'), WideChar('a')..WideChar('z')];

在这里,您声明一个也满足上述要求的集合。请注意,编译器将其视为一组序数值,而不是一组 WideChar

关于delphi - WideChar 集 : Sets may have at most 256 elements,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37936271/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com