Строковые выражения
Выражения, в которых операндами служат строковые данные, называются строковыми выражениями. Они состоят из строковых констант, переменных, указателей функций и знаков операций. Над строковыми данными допустимы операция сцепления и операции отношения.
Операция сцепления (+) применяется для сцепления нескольких строк в одну результирующую строку.
Пример:
Выражение | Результат |
'E'+'C'+' 18' +'40' | 'EC 1840' |
Длина результирующей строки не должна превышать 255.
Операции отношения (=, <>, <, >, >=, <=) проводят сравнение двух строковых операндов и имеют приоритет более низкий, чем операция сцепления, т.е. вначале всегда выполняются все операции сцепления, если они присутствуют, и лишь потом реализуются операции отношения. Сравнение строк производится слева направо до первого несовпадающего символа, и та строка считается больше, в которой первый несовпадающий символ имеет больший номер в стандартной таблице обмена информацией. Результат выполнения операций отношения над строковыми операндами всегда имеет булевский тип и принимает значение True, если выражение истинно, и False, если выражение ложно.
Пример:
Выражение | Результат |
'COSM1'<'COSM2' | True |
Если строки имеют различную длину, но в общей части символы совпадают, считается, что более короткая строка меньше, чем более длинная. Строки считаются равными, если они полностью совпадают по длине и содержат одни и те же символы.
Для присваивания строковой переменной результата строкового выражения используется оператор присваивания (:=).
Допускается смешение в одном выражении операндов строкового и литерного типа. Если при этом литерной переменной присваивается значение строкового типа, длина строки должна быть равна единице, иначе возникает ошибка выполнения.
Для обработки строковых данных используются стандартные процедуры и функции.
Процедуры обработки строк
Delete (St, Poz, N) – удаление N символов строки St, начиная с позиции Poz.
Значение St | Выражение | Результат |
'абвгде' | Delete (Str,4,2) | 'абве' |
Insert (Str1, Str2, Poz) – вставка строки Str1 в строку Str2, начиная с позиции Poz.
Пример:
Var
S1,S2,S3 : String[11];
...
S1:=' Pentium ';
S2:='V';
S3:=Insert (S1, S2, 10);
В результате выполнения последнего выражения значение строки S3 станет равным 'Pentium V'.
Str (I, St) – преобразование числового значения величины I (целого или вещественного типа) и помещение результата в строку St. После I может записываться формат, аналогичный формату вывода. Если в формате указано недостаточное для вывода количество разрядов, поле вывода расширяется автоматически до нужной длины.
Значение I | Выражение | Результат |
Str (I:6, St) | ' 1500' |
Val (St, I, Cod) – преобразует значение St в величину целочисленного или вещественного типа и помещает результат в I. Значение St не должно содержать незначащих пробелов в начале и в конце. Cod — целочисленная переменная. Если во время операции преобразования ошибки не обнаружено, значение Cod равно нулю, если ошибка обнаружена (например, литерное значение переводится в цифровое), Cod будет содержать номер позиции первого ошибочного символа, а значение I не определено.
Значение St | выражение | Результат |
'1450' | Val (St, I, Cod) | 1450 Cod=0 |