TURBO PASCAL |
Новости
|
Открытые строковые параметрыОткрытые строковые параметры могут описываться двумя спосо- бами: - с помощью идентификатора OpenString; - с помощью ключевого слова string в состоянии {$P+}. Идентификатор OpenString описывается в модуле System. Он обозначает специальный строковый тип, который может использовать- ся только в описании строковых параметров. В целях обратной сов- местимости OpenString не является зарезервированным словом и мо- жет, таким образом, быть переопределен как идентификатор, задан- ный пользователем. Когда обратная совместимость значения не имеет, для измене- ния смысла ключевого слова string можно использовать директиву компилятора {$P+}. В состоянии {$P+} переменная, описанная с клю- чевым словом string, является открытым строковым параметром. Для открытого строкового параметра фактический параметр мо- жет быть переменной любого строкового типа. В процедуре или функ- ции атрибут размера (максимальная длина) формального параметра будет тем же, что у фактического параметра. Открытые строковые параметры ведут себя также как парамет- ры-переменные строкового типа, только их нельзя передавать как обычные переменные другим процедурам или функциям. Однако, их можно снова передать как открытые строковые параметры. В следующем примере параметр S процедуры AssignStr - это открытый строковый параметр: procedure AssignStr(var S: OpenString; begin S := '0123456789ABCDEF'; end; Так как S - это открытый строковый параметр, AssignStr можно передавать переменные любого строкового типа: var S1: string[10]; S1: string[20]; begin AssignStr(S1); { S1 := '0123456789' } AssignStr(S2); { S2 := '0123456789ABCDEF' } end; В AssingStr максимальная длина параметра S та же самая, что у фактического параметра. Таким образом, в первом вызове AssingStr при присваивании параметра S строка усекается, так как максимальная длина S1 равна 10. При применении к открытому строковому параметру стандартная функция Low возвращает 0, стандартная функция High возвращает описанную максимальную длину фактического параметра, а функция SizeOf возвращает размер фактического параметра. В следующем примере процедура FillString заполняет строку заданным символом до ее максимальной длины. Обратите внимание на использование функции High для получения максимальной длины отк- рытого строкового параметра. procedure FillStr(var S: OpenString; Ch: Char); begin S[0] := Chr(High(S)); { задает длину строки } FillChar(S[1], High(S), Ch); { устанавливает число символов } emd; Значения и параметры-константы, описанные с использованием идентификатора OpenString или ключевого слова string в состоянии {$P+}, не являются открытыми строковыми параметрами. Они ведут себя также, как если бы были описаны с максимальной длиной стро- кового типа 255, а функция Hingh для таких параметров всегда возвращает 255. |
(с)Все права защищены По всем интересующим вопросам прошу писать на электронный адрес |