Я использую Delphi 2007 со всеми исправлениями и обновлениями.
У меня есть файл, который используется двумя разными проектами. В этом файле есть процедура, которую я упрощу следующим образом:
procedure MyProcedure;
const
UniqueValue: integer = 0;
begin
//some code
Inc(UniqueValue);
//some more code
end;
Команда Inc () должна завершиться ошибкой, потому что вы не можете присвоить константе. В одном проекте я получаю сообщение об ошибке (я назову этот проект «Точный»). В другом проекте я не получаю ошибок (назову его «Bogus»). Я тоже не получаю никаких предупреждений. Я не могу понять, почему компилятор пропускает этот неправильный код.
Вот что я пробовал в проекте Bogus:
1. Введите очевидную ошибку, например введите "slkdjflskdjf" в середине строки.
Результат: я получаю сообщение об ошибке, которое доказывает, что он действительно пытается скомпилировать этот файл.
2 - Удалите .DCU и перестройте проект.
Результат: заново создается .DCU, что еще раз доказывает, что проект действительно компилирует этот ошибочный код.
Есть ли у кого-нибудь мысли о том, почему могло произойти такое поведение? И, более конкретно, почему это происходит в одном проекте, а в другом - нет? Есть ли какая-то неясная опция компилятора, позволяющая назначать константы?
И последнее замечание: оба проекта преобразованы из Delphi 5. В Delphi 5 с аналогичным кодом они оба компилируются нормально.
Изменить: спасибо за вашу помощь. После изменения директивы назначаемых типизированных констант я могу добиться согласованного поведения в обоих проектах. Сегодня я узнал кое-что новое ...