2009-07-30 73 views
1

在释放模式下构建我的应用程序时,我的一个文件结尾处出现内部错误URW1135。我在网上搜索,发现(here),这可能是有关通用类型的数组一样内部错误URW1135

MyClass <T> = class 
    FArray : array of T; 
end; 

所以,我申请所提出的解决办法在我的整个代码库(声明一个类TArrayType = T的阵列)。

但不幸的是,错误仍然存​​在。任何想法可能是错的?令人惊讶的是,在调试模式下一切正常。

在此先感谢。

回答

4

在D2009编译器中仍然存在一些不同的与泛型有关的问题,即使在Update 3修复了一些问题之后。大多数剩下的将会产生编译器致命错误,URW 1135是最常见的错误之一。如果该解决方案无效,请寻找其他人。

编译器在将一个专门的泛型类声明在一个地方并在别的地方使用时遇到了麻烦。例如,在一个单元:

type 
    TMyList = TObjectList<TMyClass>; 

在另一单元:

var 
    myList: TMyList; 

这可能或可能不导致编译器错误,主要基于所述随机数神的率性。

我一直在努力识别和报告尽可能多的这些错误,尽管我还没有看到任何只在发布模式下显示的错误。如果您可以追溯到特定事件,请将其报告给QC以便他们修复。希望德尔福2010年将免于泛型的问题。

+0

当覆盖泛型类中的过程时,我遇到了同样的错误。我不得不改变我的代码,不要重写父进程,而是用不同的参数在父进程中复制过程,并让我的泛型类调用它。不是我想要的,但解决了我的问题。 – Alisson 2016-02-01 16:49:48

1

这是项目选项中的Code inlining control设置。如果它设置为auto,它不会很好地仿效泛型。将其设置为off在我的发行版中,它允许它在没有内部错误的情况下进行编译。

+0

这对我来说也是这样。确实。 – 2012-06-07 09:36:44