На этом шаге мы перечислим функции, обрабатывающие значения типа PChar.
Напомним, что тип PChar является специальным указательным типом, введеным для поддержки
строк с завершающим нулем и имеющим следующее описание:
type PChar = ^Char;
Object Pascal при включенной директиве {$Х+} позволяет использовать для работы с указателями типа PChar дополнительные,
по сравнению с другими указательными типами, операции суммирования (+) и вычитания (-).
Эти операции используются для увеличения и уменьшения смещения указателя на заданную величину. Кроме того, операцию вычитания допускается применять
для вычисления разности смещений двух указателей типа PChar.
procedure TForm1.FormCreate(Sender: TObject); var Str1, Str2, Res : PChar; i, j : Word; begin . . . . Res := Str1 + i; //Res будет указывать на i символов дальше, чем Str1. Res := Str2 - i; //Res будет указывать на i символов ближе, чем Str2. j := Strl - Str2; //j будет равняться числу символов, расположенных //между символами, на которые указывают Strl и Str2. //Strl и Str2 должны указывать на один и //тот же символьный массив. end;
Стандартный синтаксис Object Pascal позволяет при сравнении указателей определять только их равенство или неравенство.
Расширенный синтаксис (при включенной директиве {$Х+}) допускает к значениям типа PChar применять также и операции <, >, <= и >= . Но, при условии,
что два сравниваемых указателя указывают на один и тот же массив символов.
Для поддержки операций со строками с завершающим нулем в Object Pascal используются следующие функции стандартного модуля SysUtils:
- Функция StrAlloc - выделяет для строки с завершающим нулем буфер максимальной длины минус единица.
- Функция StrBufSize - возвращает максимальное число символов, которые могут быть сохранены в буфере, выделенном функцией StrAlloc.
- Функция StrCat - добавляет одну строку к концу другой строки и возвращает указатель на результирующую строку.
- Функция StrComp - сравнивает две строки S1 и S2. Если S1 < S2, то результатом будет отрицательное число; если S1 = S2, то
результатом будет число, равное 0; если S1 > S2, то результатом будет положительное число. - Функция StrCopy - копирует значение одной строки в другую.
- Функция StrDispose - уничтожает строку, распределенную ранее с помощью функции StrNew.
- Функция StrECopy - копирует значение одной строки в другую. Возвращает указатель на конец результирующей строки.
- Функция StrEnd - возвращает указатель на завершающий строку нулевой символ.
- Функция StrIComp - сравнивает две строки аналогично StrComp, но без различия регистра символов.
- Функция StrLCat - присоединяет исходную строку к концу целевой строки. При этом обеспечивается, что длина результирующей строки не превышает заданного максимума. Возвращается указатель на строку-результат.
- Функция StrLComp - сравнивает строки с заданной максимальной длиной.
- Функция StrLCopy - копирует заданное число символов из исходной строки в результирующую строку и возвращает указатель на результирующую строку.
- Функция StrLen - возвращает длину строки.
- Функция StrLIComp - сравнивает две строки с заданной максимальной длиной без различия регистра символов.
- Функция StrLower - преобразует строку в нижний регистр и возвращает указатель на нее.
- Функция StrMove - перемещает последовательность символов из исходной строки в целевую строку и возвращает указатель на целевую строку.
- Функция StrNew - выделяет для строки память в динамической области.
- Функция StrPas - преобразует строку с завершающим нулем в строку типа String.
- Функция StrPCopy - копирует строку типа String в строку с завершающим нулем и возвращает указатель на строку с завершающим нулем.
- Функция StrPLCopy - копирует максимальное число символов строки String в строку с завершающим нулем.
- Функция StrPos - возвращает указатель на первое вхождение заданной подстроки в строке, или nil, если искомая подстрока в строке не содержится.
- Функция StrRScan - возвращает указатель на последнее вхождение заданного символа в строку, или nil, если символ в строке отсутствует.
- Функция StrScan - возвращает указатель на первое вхождение указанного символа в строку, или nil, если символ в строке отсутствует.
- Функция StrUpper - преобразует строку в верхний регистр и возвращает указатель на нее.
На следующем шаге мы рассмотрим операции над множествами.