Ошибки нет в одной версии Lazarus, но есть в другой.

Вопросы программирования и использования среды Lazarus.

Модератор: Модераторы

Ответить
jsa
постоялец
Сообщения: 295
Зарегистрирован: 28.11.2017 12:46:04

Ошибки нет в одной версии Lazarus, но есть в другой.

Сообщение jsa »

Здравствуйте.

Странная ситуация наблюдается.
Есть паралельно в соседние папки установленные Lazarus 2.0.8, 2.2.6 и недавно поставил посмотреть что нового 4.2.0
В целом работают нормально.

Но недавно открыл один старый проект случайно не в 2.0.8, а в 2.2.6
При компиляции он зачем-то подтягивает модуль IdHL7 (в проекте его не использую) и выдает ошибку

Код: Выделить всё

IdHL7.pas(935,7) Error: Incompatible type for arg no. 2: Got "Class Of IIdQueuedMessage", expected "TClass"
в процедуре

Код: Выделить всё

procedure TIdHL7.PreStop;

  procedure JoltList(list: TInterfaceList);
  var
    i: Integer;
  begin
    for i := 0 to list.Count - 1 do
    begin
==>>     IIdQueuedMessage(list[i]).SetEvent;
    end;
  end;   
...
Если открыть проект в 2.0.8 то там компилируется нормально.

2.0.8 установлен indylaz.lpk 10.6.2.5451
2.2.6 установлен indylaz.lpk 10.6.3.11 (обновил через сетевой диспетчер пакетов надеясь исправить ошибку. Какая версия была до этого не помню, может быть такая же 10.6.2.** но на ней тоже ошибка воспроизводилась)

-----------

Вот что не понятно.
1. Зачем подтягивается модуль IdHL7 в версии 2.2.6 если он был не нужен в 2.0.8?
2. какая методика в Lazarus для вычисления что именно использует этот модуль и классы из него. Как это определить?
3. И что можно сделать с этой ошибкой?
mike
новенький
Сообщения: 55
Зарегистрирован: 23.02.2007 16:25:00

Сообщение mike »

Скорее всего в 2.2.6 или срабатывает какой-то лишний $IFDEF, или наоборот, не срабатывает нужный, в результате компилируется код, предназначенный для другой версии (или для Delphi).
Ответить