^A = #1 = Chr(1) – код 1,
^B = #2 = Chr( 2) – код 2,
...
^ = #26 = Chr(26) – код 26.
^[ = #27 = Chr(27) – код 27,
…
^_ = #31 = Chr(31) – код 31,
в том числе ^G — звонок (7), ^I — TAB (код 9), ^J — LF (код 10), ^M — CR (код 13) и т.п.
Рассмотрим более подробно строковый тип. Максимальная длина строки составляет 255 символов. Строки называются динамическими, поскольку могут иметь различные длины в пределах объявленных границ. Например, введя переменные
- 149 -
VAR
S32 : String[ 32];
S255 : String[255];
мы можем хранить в S32 строчные значения, длиной не более 32 символов, а в S255 — не более 255. Описание String без указания длины отводит место, как и описание String[255].
Тип String без длины является базовым строковым типом, и он совместим со всеми производными строковыми типами.
При попытке записать в переменную строку длиннее, чем объявлено в описании, «лишняя» часть будет отсечена. Можно присваивать пустые строки. Их обозначение (две одинарные кавычки подряд).
Значением строки может быть любая последовательность символов, заключенная в одинарные кавычки:
'abcde-абвгд'
>'123 ? 321'
>' '
''''
Последняя конструкция есть строка из одной одинарной кавычки.
При необходимости включать в строку управляющие коды можно пользоваться «клавиатурными» обозначениями. В этом случае значение состоит из как бы склеенных кусков:
^G 'После сигнала нажмите '^J' клавишу пробела '^M^J
В такой записи не должно быть пробелов вне кавычек.
Более общим способом включения символов (любых) в строку является их запись по ASCII-коду через префикс #. Механизм включения в строку остался тем же:
'Номер п/п'#179' Ф.И.О. '#179' Должность '#179
#7#32#179#32#32#179 (то же, что ^G'| |')
Строки различных длин совместимы между собой в операторах присваивания и сравнения, но «капризно» ведут себя при передаче в процедуры и функции. Если тип объявленного строкового параметра в процедуре или функции является производным от типа String, то при вызове процедуры или обращении к функции тип передаваемой строки должен совпадать с типом параметра. Имеется ключ компилятора $V, управляющий режимом проверки типов соответствующих формальных и фактических параметров-строк. В режиме {$V+} такая проверка проводится и при несогласованности типов выдает сообщение об ошибке. Но если отключить ее, то можно подстав-
- 150 -
лять в вызовы процедур и функций фактические параметры, имеющие другой, отличающийся от формальных, производный от String тип. При этом во время работы программы могут возникнуть наложения значений одних строк на другие и путаница в значениях. Для того чтобы писать процедуры, работающие со строками любых строковых типов, нужно описывать формальные параметры исключительно типом String и компилировать программу в режиме {$V-}. Это даст процедурам и функциям гибкость и безопасность данных.