Уже несколько раз в ХЕ8 сталкиваюсь с проблемой. Наконец созрел спросить. Имею вот такой код :
procedure LoadGroups;
begin
for i := 1 to Groups.Count do
begin
if Assigned(OnGroup) then
TThread.Synchronize(nil,
procedure
begin
OnGroup(Self, Groups, Groups.Item[i]);
end);
for j := 1 to Groups.Item[i].Users.Count do
if Assigned(OnGroupUser) then
TThread.Synchronize(nil,
procedure
begin
OnGroupUser(Self, Groups.Item[i], Groups.Item[i].Users.Item[j]);
end);
end;
end;
Что это за загадочная ошибка URW1175? Компилятор не может переварить сложную конструкцию? Возникает она из-за TThread.Synchronize. Если эту конструкцию убрать - все нормально компилируется. Так же ошибка исчезает если закоментировать цикл.
UPD: нашел как обойти проблему. Оказывается компилятор почему то не может переварить цикл for. Что бы он не ругался, достаточно заменить цикл на while.
for i := 1 to Groups.Count do
на
i := 1;
while (i <> LSkype.Groups.Count) do
После этого загадочная ошибка исчезает, и проект нормально компилируется.
UPD2: оказывается это уже известный баг, но я об этом не знал
Вопрос
DirtyBorov
Уже несколько раз в ХЕ8 сталкиваюсь с проблемой. Наконец созрел спросить. Имею вот такой код :
При компиляции получается вот такая ошибка:
[dcc32 Fatal Error] Engine.pas(159): F2084 Internal Error: URW1175
Что это за загадочная ошибка URW1175? Компилятор не может переварить сложную конструкцию? Возникает она из-за TThread.Synchronize. Если эту конструкцию убрать - все нормально компилируется. Так же ошибка исчезает если закоментировать цикл.
UPD: нашел как обойти проблему. Оказывается компилятор почему то не может переварить цикл for. Что бы он не ругался, достаточно заменить цикл на while.
for i := 1 to Groups.Count do
на
Ссылка на комментарий
2 ответа на этот вопрос
Рекомендуемые сообщения
Присоединяйтесь к обсуждению
Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.