Program SozdText;
Var Tx: Text; {Имя текстового файла} FilName: String; {Имя набора данных} Stroka: String; {Строка текста} i, n: Integer; {Вспомогательные переменные} Begin Writeln(’Введите имя набора данных’); Readln (FilName); {п. 1.1} Assign(Tx, FilName); {п. 1.2} Rewrite (Tx); {п. 1.3} Writeln (’Введите количество строк текста’); Readln(n); {п. 2.1} Writeln (’Введите строки’); For i: =1 to n do {п. 2.2} Begin Readln (Stroka); {Ввод строки с клавиатуры} Writeln(Tx, Stroka); {Запись в файл} End; Close(Tx); {п. 3} End. Работа с существующим текстовым файлом
Работа с существующим файлом обычно включает в себя операции открытия его для чтения, и затем считывания из него записей, пока не появится признак " Конец файла" – Eof(Файл). Поэтому соответствующие Паскаль-программы содержат циклы вида While Not Eof (Файл) do Begin Readln(Файл, Запись); - - - - - - - - End; Простейшая задача – вывести на экран содержимое файла. Рассмотрим ее на примере набора, созданного в предыдущем пункте.
Алгоритм 1.1. Ввести Имя_Набора_Данных. 1.2. Связать Файл с Набором_Данных. 1.3. Открыть Файл для чтения. 2.1. Количество_строк = 0. 2.2.Пока не конец файла выполнять 2.2.1. Считать из Файла строку; 2.2.2. Количество_строк = Количество_строк +1; 2.2.3. Вывести строку на экран; 2.3. Вывести Количество_строк. 2.4. Закрыть файл. 3. Закончить.
Программа будет иметь вид
Program VivodFile; Var Tx: Text; FilName, Str: String; KolStr: Integer; Begin Writeln(’Введите имя НД ’); Readln(FilName); {п. 1.1} Assign(Tx, FilName); {п. 1.2} Reset(Tx, FilName); {п. 1.3} KolStr: = 0; {п. 2.1} Writeln(’Содержимое набора’); While Not Eof(Tx) do {п. 2.2} Begin Readln (Tx, Str); KolStr: = KolStr+1; Writeln(Str); {вывод на экран} End; Writeln(’Количество строк в наборе данных - ’, kolstr); Close(Tx); {п. 2.4} End.
Типизированные файлы
Характерные особенности типизированных файлов: 1) файл может состоять из записей любого типа; 2) данные передаются из него или в него целыми записями (а не символами или строками) 3) при создании файла записи в нем автоматически нумеруются, причем номер первой из них равен 0. В разделе Var файл описывается так: Var Имя: File Of Тип_Записей; где Тип_Записей – скалярный (число, символ) или сложный (массив, тип Record и др.).
Пример. Type Anketa = Record Fam, Im, Ot: String[10]; Numz: Integer; O: Array[1..5] Of Integer; End; Var FilAnk: file of Anketa; Dan: File Of Real; Fl: File Of Char; Rank: Anketa; X: Real; Операции чтения и записи для типизированных файлов записываются в следующем виде: Read(Файл, Список_ввода); Write(Файл, Список_вывода); Пример. Write(FilAnk, Rank);
|