Delphi错误E2283太多局部常量

Flo*_*Flo 5 delphi compiler-construction string literals

我在Delphi 2006中的代码有编译问题.我使用的是静态String数组:

fsi_names : array [0..FSI_NUM_VARS-1] of string;
Run Code Online (Sandbox Code Playgroud)

在我在程序开始时调用的过程中,我为这个数组赋值.这段代码是由我编写的脚本自动生成的.它由与下一行类似的行组成:

fsi_names[idFSI_FLIGHT_PATH_ANGLE] := 'FSI_FLIGHT_PATH_ANGLE';
Run Code Online (Sandbox Code Playgroud)

总共大约有2000个元素要在这个数组中分配.我无法找到编译器死亡的神奇数字,但它适用于1853而不适用于2109.

问题是我需要这个数组将ID(它是数组的索引)转换为名称作为各种应用程序的字符串.

我知道如果我将分配的作业列表拆分并将各部分放入不同的程序中,那么它就可以了.但由于代码是自动生成的并经常更改,因此这种方法不太舒服.

我还想过将内容放入一个文件并在运行时读取它,但我宁愿保留我必须发送的文件数量.另外,我想保护普通用户的内容,这样他就不会乱用它.

您是否知道如何克服编译器的限制,或者更改我的代码以实现我的目标?

非常感谢帮助.

Flo*_*Flo 1

我找到了解决方案!

如果我在定义数组的地方初始化数组,那么编译器不会吐出错误消息:

const
  fsi_names : array [0..FSI_NUM_VARS-1] of string = (
    'NAME 0',
    'NAME 1',
    ...
    'LAST NAME'
    );
Run Code Online (Sandbox Code Playgroud)

据我所知,如果我这样做,字符串文字的数量就没有限制。

非常感谢您的想法,mj2008 的想法最有帮助!

祝你今天过得愉快

弗洛