Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2003.09.08;
Скачать: [xml.tar.bz2];

Вниз

Разве это не константа?   Найти похожие ветки 

 
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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.009 c
6-24585
MGA
2003-05-05 18:37
2003.09.08
Контроль печати сетевого принтера - КАК ?


14-24613
MIN
2003-08-20 16:27
2003.09.08
SQL


3-24362
kuchumovkv
2003-08-17 10:48
2003.09.08
Работа с TADOQuery


1-24502
Lina
2003-08-27 11:53
2003.09.08
Image


14-24711
хм
2003-08-15 23:54
2003.09.08
Микрософт





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский