- 83 -
| CONST
| R : Real = 1.1523;
| i : Integer = -10;
| S : String[10] = 'Привет!';
| P1 : Pointer = nil;
| P2 : Pointer = Ptr($A000:$1000);
| Done : Boolean = True;
Отличие от простых констант внешне небольшое: просто вклинилось описание типа. Но суть изменилась в корне. Можно использовать выражения, содержащие операции, ряд функций и простые константы (как и ранее). Но типизированные константы уже не могут принимать участие в выражениях для других констант; они ведь не столько константы, сколько переменные.
Стартовые значения сложных переменных задаются по-разному для различных типов. Массивы задаются перечислением их элементов в круглых скобках. Если массив многомерный (массив массивов), то перечисляются элементы-массивы, состоящие из элементов-скаляров. Выглядит это следующим образом:
| TYPE
| Dim1x10 : Array [1..10] of Real;
| Dim4x3x2 : Array [1..4, 1..3, 1..2] of Word;
{** это то же самое, что и задание: **}
{**Array [1..4] of Array [1..3] of Array [1..2] of Word **}
| CONST
| D1x10 : Dim1x10 =
| (0, 2.1, 3, 4.5, 6, 7.70, 8., 9.0, 10, 3456.6);
| D4x3x2 : Dim4x3x2 = (((1,2), (11,22), (111,222)),
| ((3,4), (33,44), (333,444)),
| ((5,6), (55,66), (555,666)),
| ((7,8), (77,88), (777,888)));
Здесь самым глубоким по уровню вложенности в задании переменной D4x3x2 (многомерного массива) оказывается самый дальний в описании типа массив — двухэлементный массив значений Word. Более высокий уровень — это уже массив из трех двухэлементных массивов, а вся структура переменной D4x3x2 состоит из четырех наборов по три массива из двух чисел.
Тот же способ использования скобок применяется и при задании значений типа «запись». Только надо явно указывать имя поля перед его значением:
- 84 -
| TYPE
| RecType = RECORD { тип запись }
| x, y : LongInt;
| ch : Char;
| dim : Array [1..3] of Byte
| END;
| CONST
| Rec : RecType = ( x : 123654; у : -898; ch : 'A';
| dim : (10, 20, 30));
Поле от своего значения должно отделяться знаком «:». Порядок следования полей в задании значения обязан соответствовать порядку их описания в типе, и поля должны разделяться не запятой, а точкой с запятой «;», как это делается в описании типа «запись».
В принципе, можно конструировать тип прямо в описании переменной, например:
| CONST
| XSet : Set Of Char = [ 'а', 'б', 'в' ];
но предпочтительнее использовать введенное ранее имя этого типа.
При задании структур типа Array of Char, базирующихся на символах, можно не перечислять символы, а слить их в одну строку соответствующей длины:
| CONST
| CharArray : Array [1..5] of Char='abcde'; {пять символов}