Для строковых типов данных определена операция "конкатенация", обозначаемая символом '+'. Смысл операции заключается в формировании новой строки. Динамическая длина сформированной строки равна сумме символов строк-операндов, а ее значение равно последовательности символов исходных строк.
Например:
Var
str1, str2, st : string[10];
Begin
str1 := 'Турбо - ';
str2 := 'Паскаль';
st := str1 + str2;
WriteLn(st)
End.
В результате выполнения программы будет на экране отображена текстовая строка: 'Турбо-Паск'.
Кроме операции конкатенации над значениями строковых типов разрешены операции сравнения < , <=, > , >=, = , <>, IN, при выполнении которых действуют следующие правила:
а) более короткая строка всегда меньше более длинной;
б) если длины сравниваемых строк равны, то происходит поэлементное сравнение символов этих строк с учетом лексикографической упорядоченности значений стандартного символьного типа CHAR.
Например: 'a' < 'б', т.к. ORD('a') < ORD('б');
в) компаратор IN определяет вхождение левого операнда в правый. Если левый операнд входит в правый, то результат компарации будет истинным (TRUE), в противном случае - ложным (FALSE). Левым операндом может быть только элементарное данное (здесь символ), а правым - любое множество элементов.
Доступ к отдельным элементам строк осуществляется аналогично доступу к элементам одномерного массива: после имени строковой переменной необходимо в квадратных скобках указать арифметическое выражение целого типа.
Например:
Var
mline : string;i : integer;
Begin
. .
for i := 1 to length( mline ) do
mline[i] IN ['a'...'z'] then
line[i] := chr( ord( mline[i] ) + 1);
. .
Можно заметить, что работа со строковыми данными аналогична работе с символьными массивами, однако, это не означает их полную идентичность. Необходимо помнить, что если длина символьного ряда статична, то длина стринга динамична.
Для строковых типов данных определены следующие стандартные процедуры и функции:
STR(x[:width[:decimals]];var s:string) - эта функция преобразует численное значение x в его строковое представление s.
VAL(s:string; var x,code:integer) - эта функция преобразует строковое значение s в его численное представление x.
INSERT(source: string; var s: string; index: integer) - эта процедура предназначена для вставки строки SOURCE в строку S, начиная с символа с номером INDEX в этой строке.
DELETE(var s: string; index, count: integer) - эта процедура производит удаление из строки-параметра S подстроки длиной COUNT, начиная с символа с номером INDEX.
CONCAT(s1, [s2,...]: string): string - эта функция выполняет слияние строк-параметров, которых может быть произвольное количество. Каждый параметр является выражением строкового типа. Если длина результирующей строки превышает 255 символов, то она усекается до этой длины.
COPY(s: string; index: integer; count: integer): string - эта функция возвращает подстроку, выделенную из исходной строки S, длиной COUNT символов, начиная с символа под номером INDEX.
POS(substr, s: string): byte - эта функция производит поиск в строке S подстроки SUBSTR. Результатом функции является номер позиции подстроки в исходной строке.
LENGTH(s: string): integer - эта функция возвращает текущую длину строки S.
MOVE(var x, y; count: word) - эта функция копирует заданное количество COUNT последовательных байт из источника X в приемник Y.
FILLCHAR(var x; count: word; value) - эта функция заполняет заданное количество COUNT последовательных байт переменной X указанным значением VALUE.
UPCASE(CH) - эта функция возвращает для символьного выражения CH соответствующую заглавную букву; если значением CH является любой другой символ (в т.ч. строчная буква русского алфавита), функция возвращает его без преобразования.