IPB
ЛогинПароль:

> ВНИМАНИЕ!

Прежде чем задать вопрос, смотрите FAQ.
Рекомендуем загрузить DRKB.

Наладить общение поможет, если вы подпишитесь по почте на новые темы в этом форуме.

> Типизированные константы, Дельфи
сообщение
Сообщение #1


Я.
****

Группа: Пользователи
Сообщений: 809
Пол: Мужской
Реальное имя: Саша

Репутация: -  11  +


const
y0: integer = 20;
//...
y0 := Image1.Height - y0;
//...

[Error] Unit1.pas(103): Left side cannot be assigned to
ыыы... Чего то я вааще в шоке smile.gif
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
сообщение
Сообщение #2


Гость






Цитата
И что делать?
Глобальные переменные инициализировать при описании, локальные - в теле вложенного блока. И не в коем случае не пытаться заменить слово Var на Const только для того, чтобы программа откомпилировалась. Не забывай, типизированная константа сохраняет значение при повторном входе в функцию (за счет того, что хранится не в стеке, а в сегменте данных), переменная - нет.

Цитата
Хотя почему бы это не сделать потом?..
Не поверишь smile.gif Из-за того, что язык расширяется, "потому что левая пятка разработчика так захотела". Захотел Борланд сделать константу с описанием типа - сделал (а не было ее в стандартном Паскале, там были только обычные, настоящие, константы). Захотел сделать инициализацию переменной при объявлении - сделал (и этого тоже в стандартном Паскале не было). Вот и наделали. Константа может изменять значение (уже интересно), но переменной значение присвоить нельзя (еще более интересно), если она только не описана глобально.

А между тем в более продуманных языках все нормально:

   procedure p is
V: Integer := 15;
C: constant Integer := 10;
begin
-- Изменяем сколько угодно значение переменной V, но никакими
-- уговорами нельзя заставить компилятор допустить изменение С
-- константа - значит константа...
end p;
 К началу страницы 
+ Ответить 

Сообщений в этой теме
sheka   Типизированные константы   19.11.2010 0:29
Client   const y: Integer = 20; begin y := 55; end;Точн…   19.11.2010 0:50
volvo   Это, а {$J+} не пробовали? Или Assignable typ…   19.11.2010 0:52
sheka   Оно! А че эт так? В каких целях эта директива…   19.11.2010 2:05
Unconnected   Может, от того, что константы как бы синонимы слов…   19.11.2010 2:19
volvo   Эта директива вообще существует только в целях сов…   19.11.2010 2:38
Гость   > Вообще, никогда не понимал, почему бы не сдел…   19.11.2010 2:48
sheka   Т.е. типизированные константы лучше не использоват…   19.11.2010 3:04
Unconnected   var x:integer=10; , или я что-то не понял?)   19.11.2010 3:59
sheka   Прикол.. ФП тоже разрешает такое делать..Еще на ТП…   19.11.2010 5:51
volvo   Можешь не пробовать. Это расширение Object Pascal-…   19.11.2010 5:58
sheka   Мне кажется, что компилятор скажет обо мне то, что…   19.11.2010 6:08
volvo   Глобальные переменные инициализировать при описани…   19.11.2010 8:05
TarasBer   > А как тогда задавать начальные значения? В д…   19.11.2010 14:13
Archon   Не знал, что в Делфи по-умолчанию нельзя менять ти…   19.11.2010 14:21
TarasBer   Меня другое в дельфе напрягает const T = Time;…   19.11.2010 14:45
volvo   Делай не в процедурах, а в методах класса. А …   19.11.2010 18:48


 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 27.04.2024 20:12
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name