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