从Delphi 2009升级到XE3的编译器内部错误
使用delphi XE3编译一个相当大的项目(>750K行)(从2009年升级) 获取以下错误 [dcc32致命错误]MainForm.pas(3170):F2084内部错误:URW1147 与这个问题类似,但是代码中没有使用泛型 错误并不对应于一行代码,而只是文件的结尾 即在“结束”之后 在谷歌搜索之后,我也尝试了“代码内联控制”的所有设置,但没有乐趣 不确定从何处开始寻找,并希望得到任何有教育意义的反馈(甚至可能是一个粗略的猜测) 尚未提交质量控制报告,希望从这里得到有用的反馈从Delphi 2009升级到XE3的编译器内部错误,delphi,delphi-xe3,Delphi,Delphi Xe3,使用delphi XE3编译一个相当大的项目(>750K行)(从2009年升级) 获取以下错误 [dcc32致命错误]MainForm.pas(3170):F2084内部错误:URW1147 与这个问题类似,但是代码中没有使用泛型 错误并不对应于一行代码,而只是文件的结尾 即在“结束”之后 在谷歌搜索之后,我也尝试了“代码内联控制”的所有设置,但没有乐趣 不确定从何处开始寻找,并希望得到任何有教育意义的反馈(甚至可能是一个粗略的猜测) 尚未提交质量控制报告,希望从这里得到有用的反馈 谢谢你,我
谢谢你,我已经解决了这个问题,按照上面David的建议,将代码一次剥离一个部分 解决方案如下,以防这对任何人都有帮助 原来有一个“泛型”代码的“遗留”片段,它被认为在几年前被删除,并用更传统的技术替换 有一个未重构的局部变量,定义如下
var
TestProc: TProc;
当按照以下方式分配时,会触发内部编译器错误(但不在有问题的代码行附近)
上面的数组元素TestProc属于object的过程类型
它在2009年下编译(并且工作得很好),这就是为什么它没有被更早地使用,但在XE3下会出现一个内部编译器错误
更正局部变量声明(到对象的过程)可以解决问题。如果没有代码,绝对无法提供帮助。您需要将代码分解为一个小示例,该示例生成内部错误。不要担心让代码继续工作。只需删除代码,直到编译时没有内部错误。为了生成测试用例,它永远不需要实际运行和做任何有意义的事情。谢谢David,我的下一个方法是创建一个新项目并剥离。同时,我希望有人能有一个闪光的时刻。你把失败的来源公布到QC上了吗?
TestProc := TestSuite.TestProcs[i].TestProc;