Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 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.49 MB
Время: 0.021 c
3-24321
MakNik
2003-08-18 17:17
2003.09.08
2-х уровневое приложение


14-24710
Knight
2003-08-15 04:13
2003.09.08
Люди!!! Как так можно?


1-24410
Dm1625
2003-08-25 13:18
2003.09.08
Класс-оболочка в каждой форме, исходный - один в главной


1-24429
yuliya
2003-08-28 07:36
2003.09.08
Текстовый файл


14-24628
Ru
2003-08-21 14:48
2003.09.08
Что называется