Навигация
Оглавление
Нуль-терминированные строки

Кроме стандартных строк ShortString и AnsiString, в языке Delphi поддерживаются нуль-терминированные строки языка C, используемые процедурами и функциями Windows. Нуль-терминированная строка представляет собой индексированный от нуля массив ASCII-символов, заканчивающийся нулевым символом #0. Для поддержки нуль-терминированных строк в языке Delphi введены три указательных типа данных:

type
PAnsiChar = ^AnsiChar;
PWideChar = ^WideChar;
PChar = PAnsiChar;

Типы PAnsiChar и PWideChar являются фундаментальными и на самом деле используются редко. PChar - это обобщенный тип данных, в основном именно он используется для описания нуль-терминированных строк.

Ниже приведены примеры объявления нуль-терминированных строк в виде типизированных констант и переменных:

const
S1: PChar = 'Object Pascal'; // #0 дописывается автоматически
S2: array[0..12] of Char = 'Delphi/Kylix'; // #0 дописывается автоматически
var
S3: PChar;

Переменные типа PChar являются указателями, а не настоящими строками. Поэтому, если переменной типа PChar присвоить значение другой переменной такого же типа, то в результате получится два указателя на одну и ту же строку, а не две копии исходной строки. Например, в результате оператора

S3 := S1;
переменная S3 получит адрес уже существующей строки 'Object Pascal'.
Для удобной работы с нуль-терминированными строками в языке Delphi предусмотрена директива $EXTENDEDSYNTAX. Если она включена (ON), то появляются следующие дополнительные возможности:

массив символов, в котором нижний индекс равен 0, совместим с типом PChar;


строковые константы совместимы с типом PChar.


указатели типа PChar могут участвовать в операциях сложения и вычитания с целыми числами; допустимо также вычитание (но не сложение!) указателей.
В режиме расширенного синтаксиса допустимы, например, следующие операторы:

S3 := S2; // S3 указывает на строку 'Delphi/Kylix'
S3 := S1 + 7; // S3 указывает на подстроку 'Pascal'

В языке Delphi существует богатый набор процедур и функций для работы с нуль-терминированными строками (см. справочник по среде Delphi).

 

Сайт создан в системе uCoz