在发布模式下构建应用程序时,我在其中一个文件的末尾出现内部错误URW1135。我搜索了互联网,发现(here)它可能是关于泛型类型的数组,如
MyClass <T> = class
FArray : array of T;
end;
所以,我在我的代码库中应用了建议的解决方法(声明类型TArrayType = T的数组)。
但不幸的是,错误仍然存在。什么想法可能是错的?
令人惊讶的是,在调试模式下一切正常。
提前致谢。
答案 0 :(得分:5)
在D2009编译器中仍然存在一些与Generics相关的不同问题,即使在Update 3修复了它们之后也是如此。剩下的大多数都会产生编译器致命错误,URW 1135是最常见的错误之一。如果该解决方案不起作用,请寻找其他解决方案。
编译器在一个地方声明一个专门的泛型类并在其他地方使用它时遇到的麻烦最多。例如,在一个单元中:
type
TMyList = TObjectList<TMyClass>;
在另一个单位:
var
myList: TMyList;
这可能会也可能不会导致编译器错误,主要是基于随机数神的奇思妙想。
我一直在努力识别和报告尽可能多的这些错误,尽管我还没有看到任何仅在发布模式中显示的错误。如果您可以追溯到特定事件,请将其报告给QC,以便他们可以修复它。希望Delphi 2010免于泛型问题。
答案 1 :(得分:1)
项目选项中的Code inlining control
设置。如果设置为 auto ,它对泛型不太好用。在我的发布版本中将其设置为 on 或 off 允许它在没有内部错误的情况下进行编译。