Я использую 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 с похожим кодом они оба прекрасно компилируются.
Редактировать: Спасибо за вашу помощь. После изменения директивы присваиваемых типизированных констант я могу получить согласованное поведение в обоих проектах. Сегодня я узнал что-то новое ...