Массив - это составной тип данных, состоящий из фиксированного числа элементов одного и того же типа. Для описания массива предназначено словосочетание array of. После слова array в квадратных скобках записываются границы массива, а после слова of - тип элементов массива, например:
type
TStates = array[1..50] of string;
TCoordinates = array[1..3] of Integer;
После описания типа можно переходить к определению переменных и типизированных констант:
var
States: TStates; [ 50 strings ]
const
Coordinates: TCoordinates = (10, 20, 5); [3 integers ]
Обратите внимание, что инициализация элементов массива происходит в круглых скобках через запятую.
Массив может быть определен и без описания типа:
var
Symbols: array[0..80] of Char; [ 81 characters ]
Чтобы получить доступ к отдельному элементу массива, нужно в квадратных скобках указать его индекс, например
Symbols[0]
Объявленные выше массивы являются одномерными, так как имеют только один индекс. Одномерные массивы обычно используются для представления линейной последовательности элементов. Если при описании массива задано два индекса, массив называется двумерным, если n индексов - n-мерным. Двумерные массивы используются для представления таблицы, а n-мерные - для представления пространств. Вот пример объявления таблицы, состоящей из 5 колонок и 20 строк:
var
Table: array[1..5] of array[1..20] of Double;
То же самое можно записать в более компактном виде:
var
Table: array[1..5, 1..20] of Double;
Чтобы получить доступ к отдельному элементу многомерного массива, нужно указать значение каждого индекса, например
Table[2][10]
или в более компактной записи
Table[2, 10]
Эти два способа индексации эквивалентны.
По признаку размещения в памяти массивы подразделяются на статические (static) и динамические (dynamic).
Статические массивы. Эти массивы объявляются с помощью такого формата:
array [indexType 1 , ..., indexType n ] of baseType
Каждый из типов indexType должен быть порядкового типа, диапазон которого не должен превосходить 2 Гбайт.
Динамические массивы. Эти массивы, впервые введенные в Delphi 4, не имеют фиксированного размера или длины. Память для них перераспределяется с помощью процедуры SetLength. Динамические массивы объявляются с использованием формата array of baseType, например
var MyFlexibleArray: array of Real;
Многомерные динамические массивы (multidimensional dynamic arrays).Для их объявления итеративно используется конструкция array of ... . Например, описание
type TMessageGrid = array of array of string;
var Msgs: TMessageGrid;