Открытые массивы
В параметр, который является открытым массивом, можно передавать как аргумент массив любой длины и размерности. Единственное ограничение: типы компонент у этих двух массивов должны совпадать.
В заголовке подпрограммы открытый параметр-массив описывается по следующему шаблону:
var <имя_параметра>: array of <тип_компонентов_массива>
Например, если описано
procedure proc6 (var a: array of byte);
то аргументом могут стать такие массивы:
a1: array[1..100] of byte; a2: array[-10..10] of byte; a3: array[1..2,1..3] of byte;
Компоненты открытого параметра-массива нумеруются начиная с нуля - этим достигается единообразие обращения к массивам переменной длины.
Если в качестве аргумента поступил многомерный массив, его компоненты "вытягиваются" в одну строку: сначала все компоненты первой строки массива, затем - второй строки и т.д. Например, если массив а3 имеет значения
1 2 3 4 5 6
то внутри процедуры proc6 параметр а будет иметь уже следующий вид:
1 2 3 4 5 6
причем компоненты двух массивов будут соотноситься так:
a[0] | a[1] | a[2] | a[3] | a[4] | a[5] |
a3[1,1] | a3[1,2] | a3[1,3] | a3[2,1] | a3[2,2] | a3[2,3] |