Javascript must be enabled in your browser to use this page.
Please enable Javascript under your Tools menu in your browser.
Once javascript is enabled Click here to go back to �нтеллектуальная Кобринщина

Тип pchar

В язык программирования Pascal введен тип pchar, который описывает так называемые длинные (или ASCIIZ) строки. В переменных типа string длина строки записывается в нулевом байте, а т.к. в 1 байт нельзя записать значение, превосходящее 255, то и длина переменной типа string не может превосходить 255 символов. Переменная типа pchar – это строка, которая может иметь длину до 65534 символов. Длина таких строк не указывается явно: строка начинается с первого символа и замыкается символом #0. Поскольку тип pchar определяется как указатель на символ, ASCIIZ-строки создаются в динамической памяти. С типом pchar совместим любой символьный массив, левая граница которого равна нулю. ASCIIZ-строки индексируются с отсчетом значений индекса от 0. Строковые константы также могут быть записаны в переменные типа pchar. Для вывода ASCIIZ-строк применимы операторы write и writeln.

Пример использования ASCIIZ-строк:

const

    ch_arr: array[0..20] of char = 'Hello World!';

var

    p_str: pchar;

begin

    p_str := ch_arr;

    writeln(p_str);

    p_str[4] := #0;

    writeln(ch_arr);

readln

end.

В программе символьный массив объявлен в виде типизированной константы. Поскольку под него отведены 21 байт, его содержимое нужно было бы задавать строкой из 21 символа; однако в языке программирования Паскаль строковая константа, длина которой меньше количества элементов символьного массива, также записывается в символьный массив с автоматическим заполнением конца массива символом #0. В приведенной программе осуществляется коррекция переменной p_str, что меняет содержимое массива ch_arr, т.к. переменная p_str после присваивания p_str := ch_arr просто ссылается на этот массив и оперирует областью памяти, которую он занимает. Поэтому выражение p_str[4] := #0 изменяет длину строки ch_arr до четырех символов.

ASCIIZ-строка может быть объявлена типизированной константой, но ее длина в этом случае не может превосходить 255 символов. Например:

const

            pch: pchar = 'My name is ';

К данным типа pchar с помощью операции сложения можно добавлять целые значения, что соответствует смещению начала ASCIIZ-строки на указанное число позиций. Аналогично выполняется операция вычитания. Введена также операция вычитания между двумя ASCIIZ-строками, результатом которой является целочисленное значение, соответствующее смещению в памяти начала одной ASCIIZ-строки по отношению к началу другой.

const

    pch1: pchar = 'hello world';

    pch2: pchar = 'привет мир';

var

    p_str: pchar;

    n: longint;

begin

    p_str := pch1 + 6;

    writeln(p_str); // world

    writeln(pch2 + 7); // мир

     p_str := 'This is world';

    writeln(p_str);

     n := pch2 - pch1;

    writeln(n);

readln

end.

Значение n показывает взаимное смещение в памяти двух ASCIIZ-строк.

Основные средства по работе с ASCIIZ-строками сосредоточены в модуле Strings.