Параметр-переменная используется, когда значение должно пе-
редаваться из процедуры или функции вызывающей программе. Соот-
ветствующий фактический параметр в операторе вызова процедуры или
функции должен быть ссылкой на переменную. При активизации проце-
дуры или функции формальный параметр-переменная замещается факти-
ческой переменной, любые изменения в значении формального пара-
метра-переменной отражаются на фактическом параметре.
Внутри процедуры или функции любая ссылка на формальный па-
раметр-переменную приводит к доступу к самому фактическому пара-
метру. Тип фактического параметра должен совпадать с типом фор-
мального параметра-переменной (вы можете обойти это ограничение с
помощью нетипизированного параметра-переменной).
Примечание: Файловый тип может передаваться только,
как параметр-переменная.
Директива компилятора $P управляет смыслом параметра-пере-
менной, описываемого с ключевым словом string. В состоянии по
умолчанию ({$P-}) string соответствует строковому типу с атрибу-
том размера 255. В состоянии {$P+} string указывает, что параметр
является открытым строковым параметром (см. ниже).
При ссылке на фактический параметр-переменную, связанную с
индексированием массива или получением указателя на объект, эти
действия выполняются перед активизацией процедуры или функции.
Правила совместимости по присваиванию для объектного типа
применяются также к параметрам-переменным объектного типа. Для
формального параметра типа T1 фактический параметр должен быть
типа T2, если T2 находится в домене T1. Например, с учетом опи-
саний Главы 4, методу TField.Copy может передаваться экземпляр
TField, TStrField, TNumField, TZipField или любой другой экземп-
ляр потомка TField.