Константы

Константа – именованный элемент программы, который не меняет свое значение. Перед употреблением должна быть объявлена в разделе констант const. Определены два типа констант: истинные и типизированные.

Истинная константа

Она объявляется со значением. Ее тип неизвестен, поэтому ее значение в программе менять нельзя:

const ConstName=<Значение>;

Типизированная константа объявляется с типом и значением. В сущности это инициализированная переменная. Ее значение в программе менять можно.

const ConstName:NameType=<Значение>;

Значением типизированной константы могут быть:

  • Конкретные данные (число, строка).
  • Выражение.
  • Для указателей Nil или адрес локальной переменной.
  • Файловый тип и тип Variant запрещены.

Как и Turbo Pascal, FPC поддерживает простые и типизированные константы.

Реализация объявлений простых констант одинакова во FPC, Turbo Pascal и Delphi.

Компилятору необходимо вычислять значение выражения в объявлении константы во время компиляции. Это значит, что большинство функций библиотеки времени выполнения нельзя использовать в объявлении констант. Тем не менее, можно использовать такие операции и функции, как +, -, *, /, not, and, or, div, mod, ord, chr, sizeof, pi, int, trunc, round, frac, odd. Можно объявить константы только следующих типов: порядковые, вещественные, Char и String. Правильные объявления констант:

Const

r = 2.7182818;                      // Вещественная константа

i = 2;                                // Порядковая (целая) константа

c = ’4′;                             // Символьная константа

s = ‘Это строковая константа’; // Константа типа String

cc = chr(32);

ls= SizeOf(Longint);

Простой константе не разрешается присваивать значение. Так, если даны вышеприведенные объявления, то следующая операция присваивания приведет к ошибке компилятора:

s:= ‘другая строка’;

Типизированные константы

Они служат для инициализации переменных. В отличие от простых констант, во время выполнения программы им можно присваивать значения. Они отличаются от обычных переменных тем, что автоматически получают значение в начале работы программы, а обычные переменные должны инициализироваться явным образом в ходе ее работы. Пусть дано объявление:

Const

S: String = ‘Это типизированная константа’;

Тогда

S:= ‘Result: ‘+Func;

является допустимым присваиванием, где Func – это функция, возвращающая значение типа String. Типизированные константы часто используют для инициализации массивов и записей. Для массивов начальные значения должны быть отделены друг от друга запятой и указаны в круглых скобках. Количество значений должно в точности совпадать с количеством элементов массива в объявлении типа. Например,

Const

tt: array [1..3] of string[20] = (‘ikke’, ‘gij’, ‘hij’);

ti: array [1..3] of Longint = (1,2,3);

Что касается константных записей, то все элементы записи в круглых скобках, отделенные друг от друга запятыми, должны быть указаны в формате Поле. Значение, например,

Type

Point = record

X,Y: Real

end;

Const

Origin: Point = (X:0.0; Y:0.0);

Порядок полей в константной записи должен совпадать с порядком полей в объявлении типа, иначе компилятор выдаст ошибку.

Замечание. Следует подчеркнуть, что типизированные константы получают начальные значения в начале работы программы. Это верно и для локальных типизированных констант. Локальные типизированные константы также инициализируются в начале работы программы. Если значение локальной типизированной константы менялось в предыдущем вызове функции, то это её изменённое значение сохраняется, то есть локальные типизированные константы не инициализируются при каждом вызове функции.

Ресурсные строки

Особый вид части объявления констант – это часть Resourcestring. Эта часть подобна секции Const, но поддерживает только константы типа строка и доступна только в режимах Delphi или objfpc.

Следующий пример представляет определение resourcestring:

Resourcestring

FileMenu = ‘&File…’;

EditMenu = ‘&Edit…’;

Все константы строк определены в секции resourcestring и хранятся в специальных таблицах, позволяющих манипулировать значениями строк в реальном режиме с некоторыми особыми механизмами.

Семантически строки подобны константам. Им не могут быть присвоены значения, за исключением присвоения через специальный механизм в модуле objpas. Однако они могут быть использованы в присвоениях или выражениях, как обычные константы. Главное применение секции resourcestring – для обеспечения лёгкой интернационализации. Можно не меняя имени строки изменить ее содержания без перепрограммирования исходника.

TwitterSEO CommunityВаау!News2.ruChippKoricaSMI2Google BookmarksDiggI.uaЗакладки YandexLinkstoreMyscoopCommunizmRu-marksWebmarksRuspaceLinkomaticKli.kzWeb-zakladkaZakladok.netRedditdeliciousMa.gnoliaTechnoratiSlashdotYahoo My WebБобрДобр.ruMemori.rurucity.comМоёМесто.ruMister Wong

Copyright © 2009-2010 Программирование на паскале.