2009-07-30 3 views
1

При создании моего приложения в режиме освобождения я получаю внутреннюю ошибку URW1135 в конце одного из моих файлов. Я искал в интернете и нашел (here), что это может быть о массивах универсальных типов какВнутренняя ошибка URW1135

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

Итак, я применил предлагаемый обходной путь (объявление типа TArrayType = массив Т) на протяжении всей моих кодового.

Но, к сожалению, ошибка все еще существует. Любые идеи, что может быть неправильным?

Удивительно, но в режиме отладки все работает нормально.

Заранее спасибо.

ответ

4

Есть еще несколько проблем, связанных с Generics, которые все еще существуют в компиляторе D2009, даже после того, как Update 3 исправил их. Большинство из оставшихся будут создавать фатальные ошибки компилятора, причем URW 1135 является одним из наиболее распространенных. Если это решение не работает, ищите других.

У компилятора больше всего проблем с объявлением специализированного универсального класса в одном месте и его использованием в другом месте. Например, в одном блоке:

type 
    TMyList = TObjectList<TMyClass>; 

В другом блоке:

var 
    myList: TMyList; 

Это может или не может привести к ошибке компиляции, основанные главным образом на прихоти случайное число богов.

Я работаю над тем, чтобы идентифицировать и сообщать как можно больше из этих ошибок, хотя я еще не видел их только в режиме Release. Если вы можете проследить это до определенного события, сообщите об этом в QC, чтобы они могли его исправить. Надеюсь, Delphi 2010 будет свободен от проблем Generics.

+0

У меня была такая же ошибка при переопределении процедуры в классе с дженериками. Я должен был изменить свой код, чтобы не переопределять процедуру родителя, но дублируем процедуру в родительском с другим параметром и заставляем класс моего общего класса называть его. Не то, что я хотел, но решил мою проблему. – Alisson

1

Это настройка Code inlining control в вариантах проекта. Он не играет хорошо с дженериками, если его набор равен авто. Установив его либо на, либо выключен в моей сборке релизов позволил его скомпилировать без внутренней ошибки.

+0

Это было для меня тоже. в самом деле. –

Смежные вопросы