В выражениях Delphi поддерживает три
физических строковых формата: короткий (ShortString),
длинный (LongString) и широкий (WideString). Их можно
комбинировать в операторах присваивания и
выражениях (все необходимые преобразования Delphi
выполняет автоматически).
Переменные типов AnsiString и WideString - это динамически
распределяемые массивы символов, максимальная
длина которых ограничивается только наличием
памяти. Разница между ними состоит в том, что в
AnsiString знаки записываются в формате char, а в WideString-
в формате WideChar. Обычно вполне достаточно одного
типа AnsiString, однако при работе с международными
наборами символов, такими как UNICODE, удобнее
использовать WideString.
Тип ShortString-это, по существу, массив Array [0..255] of char.
Первый его элемент задает динамическую длину
строки, которая может принимать значения от 0 до
255 символов. Символы, составляющие строку,
занимают места от 1 до 255. Тип ShortString предназначен,
в основном, для обеспечения совместимости с
ранними версиями Delphi и Borland Pascal.
Логический строковый тип именуется просто String.
Отнесение его к типу AnsiString или ShortString задается
командой $Н. По умолчанию задается { $Н+}, и String
совпадает с AnsiString. Если задать команду {$Н- }, то
String будет совпадать с ShortString и иметь максимальную
длину, равную 255 символам.
Для совместимости с другими языками
программирования в Delphi поддерживается класс
строк с конечным нулем. Зарезервированных слов
или идентификаторов для этого класса не
существует.
Строки с конечным нулем состоят из ненулевых
символов и оканчиваются символом с порядковым
номером 0 (#0). В отличие от типов AnsiString, ShortString и
WideString, строки с нулевым окончанием не имеют
указателя длины. Конец в этих стооках
обозначается нулем.
Физически строки с нуль-окончанием подобны
массивам символов с нумерацией элементов от
нуля, наподобие array [ 0 . . X] of char, где Х - некоторое
положительное целое, большее нуля, хотя никаких
объявлении подобного рода не происходит. Вместо
этого определяется переменная-указатель PChar и
распределяется необходимый объем памяти. При
необходимости строке AnsiString можно присвоить тип
PChar.
В табл. 1.7 перечислены некоторые процедуры и
функции обработки данных строковых типов.
Таблица 1.7. Строковые функции
Функция | Описание |
Concat(sl, s2, s3) | Возвращает последовательное соединение строк. Эквивалентна оператору sl+s2+s3 |
Copy(s, pos, len) | Возвращает подстроку длиной максимум len символов, начинающуюся в позиции pos строки s |
Delete(s, pos, len) | Удаляет максимум len символов из строки s, начиная с позиции pos |
Insert(sourse, tar-get, pos) | Вставляет строку source в строковую переменную target, начиная с позиции pos |
Length (s) | Возвращает динамическую длину строки. Подобна функциям LEN в Basic и strlen - в C/C++ |
Pos(substring, s) | Возвращает место первого вхождения подстроки substring в строку s. Подобна функциям SUBSTR в Basic и strstr () - в C/C++ |
SetLength(s, newlen) | Задает новую динамическую длину newlen строковой переменной s |
SetString | Задает содержимое и длину строки |
Str(x, s) | Преобразует численное значение х в строковую переменную s |
StringOfChars | Возвращает строку с конкретным числом символов |
UniqueString | Делает данную строку уникальной со счетом обращений 1 |
Val (s, v, code) | Преобразует строку s в соответствующее численное представление v |