Массивы содержат фиксированное число элементов одного типа,
так называемого типа элемента. На приводимой ниже синтаксической
диаграмме тип элемента следует за словом of.
┌───────┐ ┌───┐ ┌───────┐ ┌───┐ ┌────┐ ┌─────┐
тип ──>│ array ├─>│ [ ├───>│ тип ├─┬─>│ ] ├─>│ of ├─>│ тип ├>
массив └───────┘ └───┘ ^ │индекса│ │ └───┘ └────┘ └─────┘
│ └───────┘ │
│ ┌───┐ │
└────┤ , │<──┘
└───┘
тип ┌────────────────┐
индекса ───>│ порядковый тип ├───>
└────────────────┘
В индексных типах, по одному для каждой размерности массива,
указывается число элементов. Допустимыми индексными типами явля-
ются все порядковые типы, за исключением длинного целого и подди-
апазонов длинного целого. Массив может быть проиндексирован по
каждой размерности всеми значениями соответствующего индексного
типа; число элементов поэтому равно числу значений в каждом ин-
дексном типе. Число размерностей не ограничено.
Приведем пример типа массив:
array[1..100] of Real
Если тип элемента в типе массив также является массивом, то
результат можно рассматривать как массив массивов или как один
многомерный массив. Например,
array[boolean] of array[1..100] of array[Size] of Real
интерпретируется компилятором точно так же, как массив:
array[boolean,1..10,Size] of Real
Кроме того, можно записать выражение:
packed array[1..10] of packed array[1..8] of Boolean
как
packed array[1..10,1..8] of Boolean
Для доступа к элементам массива необходимо указать идентифи-
катор массива с одним или несколькими индексами в скобках (см.
раздел "Массивы, строки и индексы").
Тип массив, имеющий вид:
B.Pascal 7 & Objects/LR - 47 -
packed array[M..N] of Char
где M меньше N, называется упакованным строковым типом (слово
packed можно опустить, поскольку оно не оказывает действия в
Borland Pascal). Упакованный строковый тип имеет некоторые свойс-
тва, не характерные для других типов массив (см. раздел "Тождест-
венные и совместимые типы" далее в этой главе).
Массив вида:
array[0..X] of Char
где X - положительное целое число, называется массивом с нулевой
базой. Массивы с нулевой базой используются для хранения строк с
завершающим нулем, и, когда разрешен расширенный синтаксис (с по-
мощью директивы компилятора {$X+}), символьный массив с нулевой
базой совместим со значением типа PChar. Полностью эта тема об-
суждается в Главе 18 "Использование строк с завершающим нулем".
Параметр, описанный с помощью синтаксиса array of T, называ-
ется открытым строковым параметром. Открытые строковые параметры
позволяют передавать одной и той же процедуре или функции строко-
вые переменные изменяющегося размера.
Примечание: Открытые строковые параметры описываются в
Главе 9.