Открытые строковые параметры могут описываться двумя способами:
- с помощью идентификатора OpenString; описывается в модуле System, не является зарезервированным словом
- с помощью ключевого слова string в состоянии {$P+}.
Для открытого строкового параметра фактический параметр может быть переменной любого строкового типа. В процедуре или функции максимальная длина формального параметра будет тем же, что у фактического параметра.
Открытые строковые параметры ведут себя также как параметры-переменные строкового типа, их нельзя передавать как обычные переменные другим процедурам или функциям., но их можно снова передать как открытые строковые параметры.
S- открытый строковый параметр процедуры AssignStr - это открытый строковый параметр: procedure AssignStr(var S: OpenString; begin S := '0123456789ABCDEF';end;
Var S1: string[10]; Begin AssignStr(S1); { S1 := '0123456789' } при присваивании параметра S строка усекается, максимальная длина S1 равна 10.
При применении к открытому строковому параметру стандартная функция Low возвращает 0, стандартная функция High возвращает описанную максимальную длину фактического параметра, а функция SizeOf возвращает размер фактического параметра.
Значения и параметры-константы, описанные с использованием OpenString или ключевого слова string в состоянии{$P+}, не являются открытыми строковыми параметрами. Они ведут себя были описаны с максимальной длиной строкового типа 255, а функция High для таких параметров всегда возвращает 255.