- •Строковые переменные
- •Строки в формате Unicode
- •Короткие строки
- •Операции над строками
- •Строковые ресурсы
- •Форматы кодирования символов
- •Стандартные процедуры и функции для работы со строками
- •Insert(Source: string; var s: string, Index: Integer) — вставляет строку Source в строку s, начиная с позиции Index.
- •Задание:
Короткие строки
Короткая строка объявляется с помощью идентификатора типа ShortString или зарезервированного слова string, за которым следует заключенное в квадратные скобки значение максимально допустимой длины, например:
Var Address: ShortString; Person: string[30]; |
Короткая строка может иметь длину от 1 до 255 символов. Предопределенный тип данных ShortString эквивалентен объявлению string[255].
Реальная длина строки может быть меньше или равна той, что указана при ее объявлении. Например, максимальная длина строки Friend в примере выше составляет 30 символов, а ее реальная длина — 9 символов. Реальную длину строки можно узнать с помощью встроенной функции Length. Например, значение Length(Friend) будет равно 9 (количество букв в слове Alexander).
Все символы в строке типа ShortString пронумерованы от 0 до N, где N — максимальная длина, указанная при объявлении. Символ с номером 0 — это служебный байт, в нем содержится реальная длина короткой строки. Значащие символы нумеруются от 1. Очевидно, что в памяти строка занимает на 1 байт больше, чем ее максимальная длина. Поэтому значение SizeOf(Friend) будет равно 31.
Type TName = string[30]; var Name: TName; const FriendName: TName = 'Alexander'; |
Обратиться к отдельному символу можно так же, как и к символу обычной строки. Например, выражения FriendName[1] и FriendName[9] возвращают соответственно символы 'A' и 'r'. Значения FriendName[10] .. FriendName[30] будут случайными, так как при объявлении типизированной константы FriendName символы с номерами от 10 до 30 не были инициализированы. Символы, получаемые в результате индексирования короткой строки, принадлежат типу Char.
Поскольку существует два типа строк: обычные (длинные) строки и короткие строки, возникает закономерный вопрос, можно ли их совмещать. Да, можно! Короткие и длинные строки могут одновременно использоваться в одном выражении, поскольку компилятор языка Delphi автоматически генерирует код, преобразующий их тип. Более того, можно выполнять явные преобразования строк с помощью конструкций вида ShortString(S) и AnsiString(S).
Операции над строками
Выражения, в которых операндами служат строковые данные, называются строковыми. Они состоят из строковых констант, переменных, имен функций и строковых операций. Над строковыми данными допустимы операции сцепления и отношения.
Операция сцепления (+) применяется для сцепления нескольких строк в одну строку.
Выражение |
Результат |
'Object' + ' Pascal' |
'Object Pascal' |
Операции отношения (=, <>, >, <, >=, <=) проводят сравнение двух строковых операндов. Сравнение строк производится слева направо до первого несовпадающего символа, и та строка считается больше, в которой первый несовпадающий символ имеет больший номер в кодовой таблице. Строки считаются равными, если они полностью совпадают по длине и содержат одни и те же символы. Если строки имеют различную длину, но в общей части символы совпадают, считается, что более короткая строка меньше, чем более длинная.
Выражение |
Результат |
'USA' < 'USIS' |
True { A < I } |
'abcde' > 'ABCDE' |
True |
'Office' = 'Office' |
True |
'USIS' > 'US' |
True |
Если короткой строке присваивается значение, длина которого превышает максимально допустимую величину, то все лишние символы справа отбрасываются.
Объявление строки |
Выражение |
Значение строки |
Name: string[6]; |
Name := 'Mark Twain'; |
'Mark T' |
Допускается смешение в одном выражении операндов строкового и символьного типа, например при сцеплении строки и символа.