В выражениях 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 перечислены некоторые процедуры и функции обработки
данных строковых типов.
Совет: Программисты, работающие на С, привыкли
записывать все строки в массивы с нуль-окончанием. Фактически они применяют в
выражениях не строковые переменные, а указатели на них. Программисты, работающие
на Basic, привыкли использовать строку как одно целое. Для типа AnsiString из
Delphi годятся оба подхода.
Таблица 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 |
|