gpt4 book ai didi

Delphi 错误 E2283 本地常量太多

转载 作者:行者123 更新时间:2023-12-03 15:13:51 25 4
gpt4 key购买 nike

我在 Delphi 2006 中的代码遇到编译问题。我使用的是静态字符串数组:

fsi_names : array [0..FSI_NUM_VARS-1] of string;

在程序开始时调用的过程中,我向该数组赋值。该代码是由我编写的脚本自动生成的。它由类似于下一行的行组成:

fsi_names[idFSI_FLIGHT_PATH_ANGLE] := 'FSI_FLIGHT_PATH_ANGLE';

此数组中总共有大约 2000 个要分配的元素。我找不到编译器终止的神奇数字,但它适用于 1853,不适用于 2109。

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

我知道,如果我将作业列表分开并将各个部分放入不同的过程中,那么它就会成功。但由于代码是自动生成的并且经常更改,因此这种方法不太舒服。

我还考虑过将内容放入文件中并在运行时读取它,但我宁愿将必须发送的文件数量保持在最低限度。另外,我想保护普通用户的内容,以免他乱搞。

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

非常感谢您的帮助。

最佳答案

如果我是您,我会创建一个带有标识符的简单 ASCII 文本文件,以便文件的 idFSI_FLIGHT_PATH_ANGLE + 1 行包含字符串“FSI_FLIGHT_PATH_ANGLE”。然后我会将此文件添加到应用程序的资源中。这样,数据就会包含在EXE中,您可以在运行时轻松读取数据:

function GetNthString(const N: integer): string;
var
RS: TResourceStream;
begin
RS := TResourceStream.Create(hInstance, 'NAMEOFRESOURCE', RT_RCDATA);
with TStringList.Create do
try
LoadFromStream(RS);
result := Strings[N];
finally
Free;
end;
RS.Free;
end;

关于Delphi 错误 E2283 本地常量太多,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3515457/

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