我正在使用Delphi 6,我正在准备一个列表,它将包含一些变量字符串名称及其指针引用.代码有点像,
var
VarList: TstringList;
procedure AddNameList(aName :string; aRef: TObject);
begin
VarList.AddObject(aName, aRef);
end;
Run Code Online (Sandbox Code Playgroud)
上面的方法AddNameList在Unit1.pas中调用,我有大约5到6千个条目,这可以增加.
现在unit1包含
AddNameList('MyVar1', MyVar1);
AddNameList('MyVar2', MyVar2);
AddNameList('MyVar3', MyVar3);
...
..
..
AddNameList('MyVar5000', MyVar5000);
Run Code Online (Sandbox Code Playgroud)
编译器给了我太多的局部常量.使用较短的程序错误.我试图在两个程序中划分它,然后它也没有用.我提到了可用的帖子,并且类似于此错误,建议使用常量数组.但在那种情况下,我需要维护两个常量数组并保持这两个数组将是困难的,因为没有.常数很大.有没有其他方法可以解决此问题.
从我的实验来看,Delphi 6的上限为3297个不同的字符串文字.此限制是每单位限制.因此,一种解决方案是找到将代码拆分为单独单元的方法.它不是很优雅,但是这个代码对我来说似乎并不优雅,坦率地说,我不确定使用多个单元真的让事情变得更糟.
更新
事实证明我的实验很糟糕.限制实际上是每个功能而不是每个单元.因此,将代码拆分为多个函数就足够了.
对于它的价值,现代版本的Delphi对每个单元的字符串文字数量有一个更大的限制(如果确实存在限制).在XE7中,我放弃了160,000个不同的文字而没有编译器反对.
大概你的代码是自动生成的?我想知道你是否有可能AddNameList用一个调用的循环替换这个巨大的调用列表AddNameList.要传递的数据必须AddNameList从某个地方读取,也许是链接的资源.或者甚至可以以编程方式生成所有这些调用.
如果不知道如何使用不同的调用而不是迭代来找到自己的代码的精确细节,我认为很难提供更详细的建议.
| 归档时间: |
|
| 查看次数: |
1119 次 |
| 最近记录: |