На этом шаге мы рассмотрим короткие строки.
Память для коротких строк так же, как и для массивов, выделяется статически. Как структура данных ShortString-строка аналогична одномерному массиву символов, но имеет существенное отличие от него. Массив символов имеет фиксированную длину (количество элементов), которая определяется при описании, а ShortString-строка имеет две разновидности длины:
В ShortString-строках текущая длина строки указывается в нулевом (то есть имеющем индекс 0) элементе строки. В этот элемент записывается символ, код которого равняется значению текущей длины. Нулевой элемент строки при этом сделан невидимым для пользователя, однако использовать его в программах (записывать в него и извлекать из него информацию) хотя не рекомендуется, но в принципе допускается. Поскольку каждый символ занимает один байт памяти, то, при таком способе указания текущей длины, максимально допустимая длина строки будет ограничена максимальным значением, которое можно записать в один байт памяти. То есть максимальная текущая длина строки может быть не более 255 символов.
Преимуществом такого способа представления строк является чрезвычайно простой доступ к значению текущей длины строки, что позволяет эффективно выполнять работу со строками. Недостаток состоит в ограничении на максимальную длину строки.
Рис.1. Представление в памяти короткой строки
Напомним, что этому способу реализации строк соответствует определенный тип String при выключенной директиве {$Н-}. Onpеделяемая при описании общая длина строки указывается в квадрат скобках.
var
S1 : String [10] ;
S2 : String [128] ;
Smax1 : String;
Smax2 : ShortString;
Если длина в описании типа String не указывается, то по умолчанию принимается максимальная длина, равная 255 символам.
На следующем шаге мы рассмотрим длинные строки.