Вниз
Скачать: 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 вся ветка

Скачать: CL | DM;



Память: 0.47 MB
Время: 0.013 c
14-24669
KPY
2003-08-20 12:18
2003.09.08
Где скачать самоучитель по Autocad 2000?


1-24453
Layner
2003-08-25 11:38
2003.09.08
мастера, помогите, 2 часа бъюсь над проблемой, есть строка


3-24383
Khloo!
2003-08-15 12:13
2003.09.08
Насколько устойчив Paradox?


11-24400
SPeller
2002-12-31 11:07
2003.09.08
Всех приКОЛистов с Новым Годом!!!


1-24458
tria
2003-08-27 17:40
2003.09.08
Подскажите, где искать процедуру, отвечающую за прокрутку?




   Наверх