gpt4 book ai didi

delphi - 枚举类型: Limit to number of items?

转载 作者:行者123 更新时间:2023-12-03 15:18:50 29 4
gpt4 key购买 nike

Delphi 中枚举类型的项数是否有限制?我需要创建一个可能包含数百个项目的枚举类型,并希望确保不存在 255 个项目的限制。

type 
TMyType = (mtOne, mtTwo, mtThree, ..., mtThreeHundred);

最佳答案

我认为理论限制是 2^32 项;但实际上,RTTI 生成通常是限制,因为 RTTI 不能超过 65535 字节来存储所有内容,包括枚举元素的名称;名称以 UTF-8 存储,所以还不错。

另一方面,具有显式元素值的枚举没有完整的 RTTI,因此您可以通过这种方式规避限制。下面的程序创建了一个包含 500,001 个枚举元素的源文件,该文件本身可以编译:

var
i: Integer;
begin
Writeln('type');
Writeln(' E = (');
for i := 1 to 500000 do
Writeln(' x_', i, ' = ', i, ',');
Writeln('x_last);');
Writeln('begin');
Writeln('end.');
end.

使用 dcc32 编译此程序的输出需要一些时间,因为 Delphi 编译器使用只有 32 个存储桶的哈希表来检查枚举标识符重复项,并使用只有 256 个存储桶的哈希表来检查文件级范围,其中(在缺少 {$SCOPEDENUMS ON} 的情况下)是添加枚举标识符的位置。

关于delphi - 枚举类型: Limit to number of items?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4097201/

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