2012-10-22 53 views
0

编译一个相当大的项目(> 750K线)用Delphi XE3(2009年升级)编译器内部错误升级从2009年德尔福XE3

收到以下错误

[dcc32 Fatal Error] MainForm.pas(3170): F2084 Internal Error: URW1147

这个问题类似,然而代码中没有任何地方使用泛型。

internal error with generic array

误差不对应一行代码,但该文件的,而刚刚结束。

I.e.在“结束”之后。

在谷歌搜索之后,我也尝试了“代码内联控制”的所有设置,但没有喜悦。

不知道从哪里开始寻找,并会欣赏任何受过良好教育的反馈(或者甚至是疯狂的猜测)。

还没有投入QC报告,希望有用的反馈从这里。

感谢

+5

绝对不可能帮助没有代码。你需要将代码剥离成一个小例子,产生内部错误。不要担心保持代码正常工作。只要删除代码,直到它编译没有内部错误。它永远不需要为生成测试用例而运行并做任何有意义的事情。 –

+0

谢谢David,制作一个新项目并剥离是我的下一个方法。希望同时有人可能有一个灯泡的时刻。 – Peter

回答

1

曾经通过一次按上述大卫的建议剥开的代码部分解决了这个问题。

的解决方案是为如下的情况下,这是有帮助的人......

原来存在的“仿制药”的代码,被认为已被删除,几年前和更换使用“遗留”片段更传统的技术。

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

var 
    TestProc: TProc; 

当按照以下分配时,触发内部编译器错误(但不通问题的代码线附近)。

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

上面的数组元素TestProc是对象的类型的程序。

这在2009年编译(并完美工作),这是它之前没有拿起,但给XE3下的内部编译器错误。

更正局部变量声明(对象的过程)可以解决问题。

+2

是否将失败的来源发布到QC? –

+1

没错。始终提交内部错误的QC报告。 –