一台机器上突然出现Delphi错误:E2056 字符串字面量最多有255个元素,怎么可能?
Posted
技术标签:
【中文标题】一台机器上突然出现Delphi错误:E2056 字符串字面量最多有255个元素,怎么可能?【英文标题】:Delphi error appeared suddenly on one machine: E2056 String literals may have at most 255 elements, how is it possible? 【发布时间】:2010-10-13 09:04:16 【问题描述】:直到今天早上我都能够构建一个应用程序,然后我不知道在尝试构建时发生了什么
[DCC Error] myunit.pas(1710): E2056 String literals may have at most 255 element`
如果这行得通,为什么要这样做? (1710) 上个月未编辑。我与同事的项目选项和环境选项一一检查,它们是相同的。 (唯一的区别是我安装了所有的 Delphi 更新,而他没有安装,我今天没有安装)。
此外,如果我通过将字符串拆分为 2 来修复上述“错误”,则执行类似
S := 'firstpart' + 'secondpart';
而不是
S := 'firstpartsecondpart';
// this is an example of course firstpartsecondpart
//is a string of more than 255 chars
我还有一个问题:
[DCC Error] myunit.pas(1797): E2283 Too many local constants. Use shorter procedures
为什么会这样?我今天没有改变这个程序。这确实是一个漫长的过程,但它曾经编译到今天早上。我试图将 tjhe 程序拆分为 2 并且我能够编译...
最后……
断点不再起作用。如果我尝试设置断点,在编译和链接后,breaxpoint 的 RED 圆圈会变为绿色并带有 X,就像您尝试调试无法调试的代码行时一样。
我尝试了所有方法,包括重新启动和在项目选项中将 Debug Info 设置为 True。
最后说明:似乎由于某种原因应用了一些奇怪的设置。我不记得做过什么奇怪的事情。最近我安装了 CnPack,但我可以有效地使用它好几天。这个问题从今天开始。
谁能帮帮我?我真的很麻烦,我迷路了半天,我仍然找不到出路。
【问题讨论】:
【参考方案1】:您似乎更改了“大字符串”项目选项。您是否在代码中添加了 $H?还是您摆弄了项目选项? (“编译器选项/大字符串”需要勾选默认为超过 255 个字符的字符串。) 绿色的断点意味着这个特定的代码没有被编译,因此它不会被调用。检查您的代码是否正在调用此代码,或者它是否正在查看其他(预编译?)单元。
我的 cmets 从下面完成答案:如果所有断点都是绿色的,则表明您在设置项目选项时遇到了问题。如果您删除 YourProject.dproj 和 YourProject.dproj.local 文件(移动到其他地方,不要删除)然后打开 YourProject.dpr,您的项目应该有默认选项。检查它在这种情况下是否有效。如果没有,请将旧文件移回。E2056 错误是因为 Delphi 代码中的字符串不能超过 255 个字符。通过在字符串中包含“+”来拆分它可以解决这个问题。请参阅 qc.embarcadero.com/wc/qcmain.aspx?d=71575 了解您的同事未收到此警告的原因。
【讨论】:
我搜索了所有代码,但没有 $H,我试图在给我带来问题的单元顶部添加 $H+,但我有同样的错误。 ($H+ 是默认设置,但我还是尝试了)。 此外,对于代码编译的断点问题,我可以在代码的任何行中放置一个断点,然后得到“绿色断点”。 如果所有断点都是绿色的,则表明您在设置项目选项时遇到了问题。如果您删除 YourProject.dproj 和 YourProject.dproj.local 文件(移动到其他地方,不要删除)然后打开 YourProject.dpr,您的项目应该有默认选项。检查它在这种情况下是否有效。如果没有,请将旧文件移回。 YES 删除这 2 个文件解决了问题,无论如何 255 错误仍然存在。任何的想法?我的意思是在哪里可以检查已更改的设置?我的同事可以构建相同的代码并且没有那个错误。 E2056 错误是因为 Delphi 代码中的字符串不能超过 255 个字符。通过在字符串中包含“+”来拆分它可以解决这个问题。请参阅 qc.embarcadero.com/wc/qcmain.aspx?d=71575 了解您的同事未收到此警告的原因。以上是关于一台机器上突然出现Delphi错误:E2056 字符串字面量最多有255个元素,怎么可能?的主要内容,如果未能解决你的问题,请参考以下文章
delphi程序突然出现 Exception EAccessViolation错误