Формальные параметры – идентификаторы, которые принимают значения фактических параметров, указанных при вызове подпрограмм.
Параметры в подпрограмму могут передаваться как по ссылке, так и по значению. В случае если формальный параметр описан как параметр по ссылке, тогда фактический параметр должен являться переменной или полем объекта. Если формальный параметр описан как параметр по значению, тогда фактический параметр должен являться выражением. Описанию формального параметра по ссылке должно предшествовать ключевое слово VAR.
Аргумент, передаваемый в качестве значения параметра по ссылке должен иметь такой же тип, что и тип параметра. Аргумент, передаваемый в качестве значения параметра по значению должен иметь тип, который можно привести к типу параметра.
Формальные параметры являются локальными для процедуры (функции).
$ FormalParameters = [FPSection {";" FPSection}]
$ FPSection = [VAR] ( ident ":" FormalType ["="expression] | ident {"," Ident} ":" FormalType | PARAMARRAY ArraySection )
$ FormalType = ClassType
Формальный параметр, передаваемый по значению, может быть необязательным. Параметр считается необязательным, если для него определено значение по умолчанию. Все необязательные параметры должны обязательно следовать в конце списка параметров. Значение по умолчанию не может быть присвоено списку параметров. Для указания массива параметров используется зарезервированное слово PARAMARRAY. Действуют следующие правила:
Процедура (функция) может иметь только один массив параметров, и он должен быть последним аргументом в определении процедуры (функции).
Код в процедуре (функции) должен обрабатывать массив параметров как одномерный массив, каждый элемент которого имеет тот же тип данных, что и PARAMARRAY.
Массив параметров всегда является необязательным. По умолчанию его значением является пустой одномерный массив с заданным для массива параметров типом элемента массива.
Все аргументы, предшествующие в списке массиву параметров, должны быть обязательными. Массив параметров должен быть единственным необязательным аргументом.
Sub MyProc(a: Integer; Var b: String; c: String = "a");
Begin
//Набор операторов
End Sub MyProc;
Параметр «А» является обязательным и должен иметь целое значение. В качестве параметра «B» необходимо передавать какую-либо строковую переменную. Параметр «C» будет необязательным, по умолчанию в качестве его значения будет передаваться буква «а».
Sub MyProc1(a: Integer; Var b: String; Paramarray c: Array Of Double);
Begin
//Набор операторов
End Sub MyProc1;
Параметр «А» является обязательным и должен иметь целое значение. В качестве параметра «B» необходимо передавать какую-либо строковую переменную. Далее в процедуру может передаваться массив вещественных значений. Для работы с ними предназначен массив «С».
См. также: