Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Практикум10.doc
Скачиваний:
52
Добавлен:
14.02.2016
Размер:
296.96 Кб
Скачать

1.5. Ввод-вывод строк

При вводе переменных типа stringс помощью оператораreadколичество считанных символов равно максимальной длине строки. Например, если указан размер строкиstring[10], будет считано ровно 10 символов, если размер строки не указан, максимальная длина строки принимается равной 255, и вводятся все символы строки входного потока, если их количество не превышает максимальной длины объявленной строки. Если же количество символов во входном потоке больше максимальной длины строки, лишние символы отбрасываются. Символы<CR> иEOFв строку не помещаются. Поэтому, чтобы ввести значение типаstring, необходимо использовать операторreadln, а неread. За один раз могут быть введены одна или несколько строк. Рассмотри пример цикла, в котором вводится и печатается последовательность строк, пока не будет обнаружена строка ‘stop.

repeat

readln(line_of_text);

writeln(line_of_text);

until line_of_text=’stop’;

Переменные типа stringмогут быть напечатаны с помощью единственного оператораwriteилиwriteln. Отсутствие длины поля строковой переменной означает, что используется ее текущая длина. Если длина поля определена, компьютер сравнивает ее с текущей длиной строки. Если длина больше длины строки, происходит выравнивание строки по правому краю поля, а слева строка дополняется пробелами. Если поле меньше, чем строка, произойдет вывод строки с ее текущей длиной за пределы заданного поля, а указанное в формате число позиций игнорируется.

1.6. Asciiz-строки

Для совместимости с другими языками и средой Windowsвведен специальный вид строки, оканчивающийся нуль-символом (символом с кодом 0), называемыйASCIIZ-строками. В отличие от строк типаstringограничений на их длину не накладывается. Строки данного типа определяются с помощью стандартного описателяPChar, который представляет собою фактически указатель на переменную символьного типа:

type Pchar=^char;

В то же время, применение расширенного синтаксиса с ключом компилятора {$X+}, используемого по умолчанию, позволяет рассматривать переменные такого типа как строки, эквивалентные массиву символов типа

type Pchar=array[0..n] of char;

где n– количество символов в строке, не считая завершающего символа с кодом 0. В отличие от типаstring, где первым является символ с индексом 1, а нулевой байт содержит длину строки, здесь символ с индексом 0 является первым символом строки, а последний символ с индексомn- завершающим символом с кодом 0.

В качестве примера использования строк типа PCharрассмотрим следующую программу:

program example;

type tst=array[0..12] of char; {массив для строки из 12 символов}

var st:PChar;

const a:tst=’Добрый день!’#0;

begin

st:=’День добрый’;

writeln(st); {вывод строки: День добрый!}

st:=@a; {допустимо присваивание вида: st:=a}

writeln(st); {вывод строки: Добрый день!}

writeln(st[1]) {вывод символа:’0’}

end.

Для работы с ASCIIZ-строками используются стандартные модулиStringsиWinDos.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]