|
Строковые типы.
Строковые типы
В выражениях 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 |
|
|