如何解决Delphi XE中大型Enum类型的RTTI大小问题?

Har*_*uki 4 delphi enumeration rtti delphi-xe

当我尝试在Delphi XE中编译具有5000+值的Enum类型的单元时,我收到此错误

[DCC错误] uCities.pas(5834):'TCity'的E2575 RTTI太大; 使用$ RTTI缩小范围或减小类型大小

我怎么解决这个问题?

{$WEAKLINKRTTI ON}
{$RTTI EXPLICIT METHODS([]) PROPERTIES([]) FIELDS([])}
Run Code Online (Sandbox Code Playgroud)

没有帮助.

提前致谢

Fab*_*ujo 6

您正在使用枚举列出城市??? 这是新的.

使用查找数据结构比使用枚举更好.

编辑:您可以使用,例如,TClientDataset,或者您可以使用TDictionary(来自Generics.Collections单位),如果您进行任何类型的查找(从TCity值获取城市的字符串名称).

并帮助这里的人们帮助你: TCidade对那些看不懂葡萄牙语的TCity人没有任何意义,但是人们可以更好地了解你的问题.


Cos*_*und 5

具有5000+值的Enum类型不是您手工编写的Enum.现在有5k值的Enum明天会有10k.

您应该修改生成枚举的代码,以生成简单的常量.使用Integer(或Smallint)作为实际类型.这应该是好的.

  • 他正在使用Enum列出城市.翻译成英文的枚举名称是"TCity". (2认同)