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