0

用delphi XE3编译一个相当大的项目(> 750K行)(从2009升级)

收到以下错误

[dcc32 致命错误] MainForm.pas(3170): F2084 内部错误: URW1147

与这个问题类似,但是代码中没有使用泛型。

泛型数组的内部错误

该错误不对应于代码行,而只是文件的末尾。

即在“结束”之后。

在谷歌搜索之后,我还尝试了“代码内联控件”的所有设置,但没有任何乐趣。

不知道从哪里(其他)开始寻找,并会感谢任何有根据的反馈(甚至可能是一个疯狂的猜测)。

尚未提交质量控制报告,希望从这里得到有用的反馈。

谢谢

4

1 回答 1

1

根据上面大卫的建议,通过一次剥离一段代码来解决这个问题。

如果这对任何人都有帮助,请遵循解决方案......

结果发现有一个“泛型”代码的“剩余”片段,该片段被认为已在几年前被删除并使用更传统的技术替换。

有一个未重构的局部变量,定义如下。

var
  TestProc: TProc;

当按照以下分配时,会触发内部编译器错误(但离违规的代码行很远)。

TestProc := TestSuite.TestProcs[i].TestProc;

上面的数组元素 TestProc 是object 类型的过程

这在 2009 年下编译(并且工作完美),这就是为什么它没有更早被拾取,但在 XE3 下会出现内部编译器错误。

更正局部变量声明(对象过程)解决了这个问题。

于 2012-10-23T00:20:13.480 回答