Внутренняя ошибка URW1135 - PullRequest
1 голос
/ 30 июля 2009

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

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

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

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

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

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

Ответы [ 2 ]

5 голосов
/ 30 июля 2009

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

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

type
  TMyList = TObjectList<TMyClass>;

В другой единице:

var
  myList: TMyList;

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

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

1 голос
/ 09 декабря 2011

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

...