Читайте также:
|
|
Второй способ: описать внутри подпрограммы локальную переменную, которая будет физически совпадать с переменной, передаваемой через нетипизированный параметр:
<локальная_переменная>: <тип> absolute <нетипизир_параметр>;
В этом случае будут совмещены значения, физически записанные в этих переменных, в точности так же, как это происходит при подстановке аргумента в параметр–переменную, однако без контроля за совпадением типов данных. Поэтому вполне возможна, например, ситуация, когда первые четыре байта строки (аргумента, переданного в нетипизированный параметр) будут восприниматься как LongInt–число:
function func5(var x): Real;
var xxx: LongInt absolute x;
begin
{ здесь с началом любой переменной,
поступившей в параметр х,
... можно обращаться как с LongInt–числом:
при помощи локальной переменной ххх }
end;
Открытые параметры
Открытые параметры — это массивы и строки неопределённой длины. Открытым параметром может стать только параметр–переменная. Возможность работать с открытыми параметрами в подпрограммах появилась в версии Turbo Pascal 7.0.
Открытые массивы
В параметр, который является открытым массивом, можно передавать как аргумент массив любой длины и размерности. Единственное ограничение: типы компонент у этих двух массивов должны совпадать.
В заголовке подпрограммы открытый параметр–массив описывается по следующему шаблону:
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 34 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;
Длина такого параметра будет автоматически скорректирована в соответствии с длиной строки–аргумента.
Дата добавления: 2014-12-19; просмотров: 116 | Поможем написать вашу работу | Нарушение авторских прав |
|