Главная страница
    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.008 c
1-24474
хз
2003-08-27 14:47
2003.09.08
Проблема с ToolBar ами


1-24443
BVP
2003-08-25 16:51
2003.09.08
вызов произвольной функции из dll


3-24319
Tahion2
2003-08-18 11:19
2003.09.08
Как в DBGridEh (EhLib) нарисовать в ячейке картинку?


3-24320
DelphiNew
2003-08-19 12:54
2003.09.08
Поиск при вводе


14-24632
Sargos
2003-08-21 13:33
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
Английский Французский Немецкий Итальянский Португальский Русский Испанский