На этом шаге мы приведем общие сведения о строковых типах.
По сравнению с реализациями Borland (Turbo) Pascal к традиционному типу String добавлены типы ShortString и AnsiString.
Еще одно нововведение языка Object Pascal касается реализации строковых типов. Даже в первой 16-разрядной версии Delphi
был только тип String. Начиная с 32-разрядной версии Delphi наконец-то появился новый способ представления строк, соответствующий стандарту ANSI,
который построен на таком же основном принципе, что и String-строки (то есть строки, имеющие специальный дескриптор для указания длины), но, в отличие от String-строк,
не имеющий ограничения на длину строки. Это естественно порадует сторонников такого способа представления строк, поскольку способ представления с дескриптором потенциально значительно
мощнее и гибче, чем способ представления с завершающим нулем (PChar-строки), который принят в качестве стандартного для Windows.
Итак, в Object Pascal строковые типы, также как целые и символьные, разделены на две категории.
Фундаментальные строковые типы представляют две разновидности строк с дескриптором:
- короткие строки, которые имеют стандартное для Borland (Turbo) Pascal представление. Этим строкам соответствует предопределенный идентификатор ShortString;
- длинные строки, которые не имеют ограничений на длину. Этим строкам соответствует предопределенный идентификатор AnsiString.
Назначение зарезервированного слова String, которое обозначает родовой строковый тип, управляется директивой компилятора $Н. При выключенном состоянии этой
директивы {$Н-}, тип String соответствует коротким строкам, и работа с ними выполняется, как и в предыдущих реализациях. При включенной директиве {$Н+} тип String соответствуeт длинным строкам так же,
как и предопределенный идентификатор AnsiString. По умолчанию устанавливается значение {$Н+}.
Рассмотрим более подробно представление коротких (далее по тексту ShortString-строки) и длинных (далее по тексту AnsiString-строки)
строк в памяти.