TURBO PASCAL

Новости

Программы   

Turbo Pascal 

Игры

Документация   

Странности

FAQ

Ссылки

Форум

Гостевая книга

Рассылка

Благодарности

Об авторе

 

 

Открытые строковые параметры 

             Открытые строковые параметры могут описываться двумя  спосо-
        бами:

             - с помощью идентификатора 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.

Содержание

На первую страницу

Rambler's Top100 Rambler's Top100
PROext: Top 1000

(с)Все права защищены

По всем интересующим вопросам прошу писать на электронный адрес

Hosted by uCoz