Текущий архив: 2003.09.08;
Скачать: CL | DM;
Вниз
Разве это не константа? Найти похожие ветки
← →
Rouse_ (2003-08-27 14:39) [0]Здравствуй уважаемый All
На днях пришлось переписывать пару модулей бывшего нашего программиста (уже уволенного) и меня несколько покоробила куча IF-ов сделанных им, заменил все это дело на CASE и получил ошибку: Constant expression expired (кажется так, пишу с компа без Дельфи). Смотрю, все константы определены как:
const
WM_CONST: Integer = 1;
...
и т.д.
Блок CASE выглядит как:
case Value of
WM_CONST:
begin
...
end;
end;
В таком виде WM_CONST - Дельфи почему то не считает константой, но если изменить ее объявление на:
const
WM_CONST = 1;
...
То все начинает работать.
Вопрос: Разве первый вариант объявления не является константой? Что-то ничего в хелпе не нашел :(
Заранее спасибо
← →
Романов Р.В. (2003-08-27 14:42) [1]Константы в функции прописаны?
← →
HolACost! (2003-08-27 14:42) [2]Неа! Это на сколько я думаю было ещё из паскаля оставлено - т.к. там нельзя было значение переменно указать до начала проги - а дельфи можно в варе! Это не константа - это уже переменная со значением!
← →
jack128 (2003-08-27 14:53) [3]Rouse_ © (27.08.03 14:39)
есть какая то дериктива компилятора в зависемости от которой WM_CONST это или комстанта или инициализированная переменная. По умолчанию - это пеерменная
← →
Rouse_ (2003-08-27 15:00) [4]Тэкс, значит
WM_CONST: Integer = 1
это переменная, аWM_CONST = 1
это константа? Интересненько, спасибо, проверю вечером.
Раньше просто как-то не вдавался в такие подробности и оформлял константы как второй вариант, а у меня почти шестнадцать страниц в стиле первого варианта оформлены, лениво удалять определение типов для каждой константы (переменной :) код как говорил писал не я, я просто переписываю.
← →
Camus (2003-08-27 15:00) [5]См. директиву $J и птичку Assignable typed constants (Project Options, вкладка Compiler)
← →
DmS (2003-08-27 15:01) [6]{$J+}
← →
han_malign (2003-08-27 15:06) [7]Это называется типизированная константа, или инициализируемая статически размещаемая(для метода класса, для всех экземпляров имеет одно и тоже значение(последнее присвоенное)) переменная, в зависимости от опций компиляции
{$WRITEABLECONST ON/OFF}
В D7 - по умолчание OFF(D1..5 - ON)
← →
Anatoly Podgoretsky (2003-08-27 15:20) [8]Это не константа, Борланду были нужны инициализированные переменные, и они долго не мудрствуя назвали их константой, это потом вызвыало много проблем.
После они наконец изобрели инициализированные переменные, но это было потом и размещение у них различное, не локакльное.
← →
Rouse_ (2003-08-27 20:09) [9]Спасибо за советы, все верно. Самое обидное, что дома (Д6 - нелегальная) без всяких диретив работает, а на работе (Д7 - лицензия) ошибки, будем знать.
Еще раз снкс за разьяснения.
ЗЫ: Интересно, сколько еще таких тонкостей я найду, за 7 лет работы только редкая неделя без таких вот мелочей (вроде бы и не нужных на первый взгляд)
Страницы: 1 вся ветка
Текущий архив: 2003.09.08;
Скачать: CL | DM;
Память: 0.46 MB
Время: 0.007 c