报错“Too many local constants”,该如何解决? ( 积分: 200 )

  • 主题发起人 主题发起人 eastnet
  • 开始时间 开始时间
E

eastnet

Unregistered / Unconfirmed
GUEST, unregistred user!
我的代码如下:
type
TZGSS = Packed Record
MoCode : pchar

MoContent : pchar
//换过string,widestring都是一样的错
end;
function InitZGSS():integer;

var
ZGSS : array of TZGSS;

implementation

function InitZGSS():integer;
begin
SetLength(ZGSS,383);
ZGSS[0].MoCode :='0302000001';
ZGSS[0].MoContent :='天门一挂榜,预定夺标人,马嘶芒草地,秋高听鹿鸣。读了这首签诗,也许会令你心花怒放,乐不可支。是的,它的确是大吉大利的。这首签诗预示着不论你是求学,评职称,谋事,事业等等,都将给你带来升迁的喜庆机会。';
ZGSS[1].MoCode :='0302000002';
ZGSS[1].MoContent :='地有神,甚威灵,兴邦辅国,尊主佑民。这条签所寓意的是:所求的事物和人,均属地神所主宰,所支配。坤卦属土,土能生金,被木所克。坤所对应的季节是夏秋,方位是西南。';
ZGSS[2].MoCode :='0302000003';
............
............
............

ZGSS[383].MoContent :='人非孔颜,鲜能无过,过而能改,仍复无过,开花不足凭,结果方为准,放开怀抱意欣欣。这首签诗用朴质的语言,论说了对待错误应持的正确态度,富有于鲜明的哲理性。让你宽以待人,并认识自己当初所犯的过失,丢掉思想包袱,愉愉快快地去迎接新的胜利。对待曾经犯有过错的亲友';

Result := 0;
end;

在DELPHI7中编译时遇到错误“Too many local constants”,该如何解决?
 
我的代码如下:
type
TZGSS = Packed Record
MoCode : pchar

MoContent : pchar
//换过string,widestring都是一样的错
end;
function InitZGSS():integer;

var
ZGSS : array of TZGSS;

implementation

function InitZGSS():integer;
begin
SetLength(ZGSS,383);
ZGSS[0].MoCode :='0302000001';
ZGSS[0].MoContent :='天门一挂榜,预定夺标人,马嘶芒草地,秋高听鹿鸣。读了这首签诗,也许会令你心花怒放,乐不可支。是的,它的确是大吉大利的。这首签诗预示着不论你是求学,评职称,谋事,事业等等,都将给你带来升迁的喜庆机会。';
ZGSS[1].MoCode :='0302000002';
ZGSS[1].MoContent :='地有神,甚威灵,兴邦辅国,尊主佑民。这条签所寓意的是:所求的事物和人,均属地神所主宰,所支配。坤卦属土,土能生金,被木所克。坤所对应的季节是夏秋,方位是西南。';
ZGSS[2].MoCode :='0302000003';
............
............
............

ZGSS[383].MoContent :='人非孔颜,鲜能无过,过而能改,仍复无过,开花不足凭,结果方为准,放开怀抱意欣欣。这首签诗用朴质的语言,论说了对待错误应持的正确态度,富有于鲜明的哲理性。让你宽以待人,并认识自己当初所犯的过失,丢掉思想包袱,愉愉快快地去迎接新的胜利。对待曾经犯有过错的亲友';

Result := 0;
end;

在DELPHI7中编译时遇到错误“Too many local constants”,该如何解决?
 
TZGSS = Packed Record
MoCode : widestring

MoContent : widestring
//换过string,widestring都是一样的错
end;

ZGSS[383].MoContent :='人非孔颜,鲜...' //这里有问题,最后一个应该是382,数组越限了
 
to 迷糊,SetLength设成382,383,384,MoCode : widestring
MoContent : widestring;都一样错的。
 
存你贴出的代码看,只有这两个地方有问题。
可能是你的字符串太长了,编辑器的一行最长只能写255好像,你把超长的用+号连接起来符值。或者直接从外部文件读入
 
把那些东西放在一个文件里,动态读取,不要这么赋值。
 
我这个程序在这里是想从内部赋值的,不想从外部文件里调取。刚才把所有行都用“+”连接起来也是一样的错误,不过我刚试过,把从254行到383行注释掉编译就没有这个问题。而我仔细检查了最后的代码赋值,是没有问题的。因为我又试着从第1行到200行注释掉,可以编译的,这说明后面的那段赋值在语法上也是没有问题的。
我怀疑是赋的值太多引起的,但不知道如何解决这个问题。
 
难道就没有人遇见过吗?555555555555555555555555555555
 
你把你的那些字符串常量都定义为 resourcestring 看看
 
我这定义的不是常量 :(
 
字符串常量也是常量。
不想从外部读入,可以考虑使用资源文件。
 
我遇见过,将你的InitZGSS()函数写成若干个部分,比如InitZGSS1(),InitZGSS2(),这样定义应该会没问题。
 
发个文件过来看看。
 
接受答案了.
 
后退
顶部