Открытые строки

Открытые массивы

 

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

 

В заголовке подпрограммы открытый параметр-массив описывается по следующему шаблону:

 

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]

 

 

Поскольку строки - это массивы символов, то они тоже могут стать открытыми параметрами. Описывается это следующим образом:

 

var <имя_параметра>: string

 

Например:

 

function func6 (var s: string): byte;

 

Длина такого параметра будет автоматически скорректирована в соответствии с длиной строки-аргумента.