Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
вот оно.docx
Скачиваний:
6
Добавлен:
25.09.2019
Размер:
1.75 Mб
Скачать

25. Процедуры, управляющие работой буфера ввода-вывода для текстовых файлов.

Для работы с текстовыми файлами определены следующие процедуры и функции ввода-вывода.

Процедура Assign (F, Name)

Процедура Assign (F, Name) – связывает файловую переменную с внешним файлом на диске.

Процедура AssignСrt(F)

Процедура AssignСrt(F) – связывает текстовые файлы с Crt (с дисплеем).

Процедура аналогична процедуре Assign. Однако второй параметр Name в ней не используется.

Данная процедура определена в модуле Crt, который реализует более быстрый ввод-вывод по сравнению со стандартным вводом-выводом и с

большими функциональными возможностями.

Пример 5.7.

Вывод текстового файла F на принтер или экран.

Uses Crt;

Var

F: Text; K: (P, C); {К –признак вывода, P – принтер, С – Crt}

Процедура Read ([F,] V1 [, V2, …, VN])

Процедура Read ([F, ] V1 [, V2, …, VN]) – считывает одно или несколько

значений из текстового файла F в одну или несколько переменных Vi. Данная процедура описана выше для файлов с типом (см. подразд. 5.3).

Отличия при работе с текстовыми файлами:

файл должен быть открыт для чтения (процедурой Reset);

первый параметр может быть опущен (например, Read(X, Y)), в этом

случае подразумевается стандартный входной текстовый файл Input;

при выполнении процедуры Read осуществляется преобразование

очередного элемента файла из символьного представления к типу переменной

Vi. Vi может иметь символьный, целочисленные, вещественные, строковый тип,

тип массива символов или тип диапазона данных типов.

Если переменная V имеет тип Char, то из файла F в V считывается

очередной символ, включая символы-разделители «Конец файла» (значение Chr(26) – #26), и «Конец строки» (Chr(13) – #13, Chr(10) – #10). Следующая процедура Read начинается со следующего символа в файле.

Если переменная V имеет арифметический тип, то пропускаются пробелы, символы табуляции, маркеры конца строки до появления цифровой комбинации. Считывание прекращается при достижении пробела, символа табуляции, маркера конца строки или маркера конца файла. Следующее чтение начинается с вышеперечисленных символов. Если в цифровой комбинации встретились запрещенные символы (например, буква вместо цифры), то возникает сообщение об ошибке ввода-вывода.

Если переменная V имеет тип String, то в нее передается столько символов, какова длина переменной V при объявлении (если длина V меньше длины текущей строки файла) или строка файла до маркера концаV больше длины строки файла). Маркер в строку не заносится. В первом случае по следующей операции чтения в переменную V будет передана очередная последовательность символов из первой строки файла в соответствии с длиной переменной V. Во втором случае следующая операция считывани начинается маркером конца строки, завершающим предыдущую строку.Но процедура Read не осуществляет переход на следующую строку файла после чтения. Таким образом, нельзя использовать последовательные вызовы процедуры Read для чтения последовательных строк, так как никогда не осуществится переход из первой строки во вторую. Первый вызов процедуры Read считает первый элемент последующие вызовы будут возвращать строку нулевой длины. Поэтому при чтении из текстового файла в переменные типа String необходимо использовать не процедуру Read, а процедуру Readln.

Процедура Readln [([F] [,] [V1, V2, …, VN])]

Процедура Readln [([F, ] [V1, V2, …, VN])] – выполняет процедуру Read, а

затем переходит в начало следующей строки файла. Таким

образом, после прочтения в переменные Vi данных из файла пропускаются все оставшиеся символы в текущей строке и маркер конца строки. Если при вызове процедуры отсутствует список элементов V (Readln(F)), то происходит переход к следующей строке (если она существует) или к концу файла F.

Если имя файла в процедуре Readln опущено, то подразумевается стандартный входной текстовый файл Input. Например,

Readln (X, Y, Z);

Readln;

Процедура Readln (F, V) определена только для текстовых файлов.

Процедура Write ([F,] E1 [, E2, …, EN])

Процедура Write([F,] E1 [, E2, , EN]) – записывает одно или несколько значений Ei в файл F. В общем случае E может быть выражением.

Процедура описана для файлов с типом (см. подразд. 5.3).

Отличия для текстовых файлов:

Файл должен быть открыт процедурой Rewrite или Append.

Если первый параметр (F) опущен, то подразумевается стандартный

выходной текстовый файл Output. Например, Write(A, B).

При выполнении процедуры Write осуществляется преобразование

выводимого значения из типа выражения E к символьному типу. Возможны

Следуюзие типы Ei: символьный, арифметические, строковый, массив исмволов, логический и их диапазоны.

Для данных типа Char и String выводится непосредственно ихзначение.

Если Ei представляет собой арифметическое значение, то перед выводом в текстовый файл оно предварительно преобразуется из внутреннего значения в десятичную систему счисления, а затем представляется в коде ASCII (по байту на десятичную цифру).

Если Ei имеет тип Boolean, то выводится строка True или False.

Если не указан формат вывода, то под вывод всех типов Ei отводится

столько символов, сколько минимально необходимо. Для вывода вещественных

типов отводится 24 позиции, причем вещественное число будет выведено в

виде мантиссы и порядка.

Значения Ei могут сопровождаться указанием формата вывода:

E: L1[: L2] .

Это позволяет управлять расположением данных по позициям строки.

Процедура Writeln([F,][E1,E2, …,EN])

Процедура Writeln([F,][E1,E2, …,EN]) – выполняет процедуру Write, и

затем записывает маркер конца строки в файл F.

Если отсутствует список выражений Ei, то записывается только маркер конца строки.

Если опущено имя файла, то подразумевается файл Output. Например,

Writeln(F);

Writeln(A, B, C); Writeln;

Процедура определена только для текстовых файлов.