Паскаль рассматривает файл как последовательность компонентов, которые должны быть одинакового типа. Тип файла определяется типом компонентов. Тип данных файла определяется как —
type file-name = file of base-type;
Где базовый тип указывает тип компонентов файла. Базовый тип может быть чем угодно, целым, действительным, логическим, перечисляемым, поддиапазоном, записью, массивами и наборами, за исключением другого типа файла. Переменные типа файла создаются с помощью объявления var —
var f1, f2,...: file-name;
Ниже приведены некоторые примеры определения некоторых типов файлов и переменных файлов:
type rfile = file of real; ifile = file of integer; bfile = file of boolean; datafile = file of record arrfile = file of array[1..4] of integer; var marks: arrfile; studentdata: datafile; rainfalldata: rfile; tempdata: ifile; choices: bfile;
Создание и запись в файл
Давайте напишем программу, которая создаст файл данных для записей студентов. Это создаст файл с именем student.dat и запишет в него данные студента —
program DataFiles; type StudentRecord = Record s_name: String; s_addr: String; s_batchcode: String; end; var Student: StudentRecord; f: file of StudentRecord; begin Assign(f,'students.dat'); Rewrite(f); Student.s_name := 'John Smith'; Student.s_addr := 'United States of America'; Student.s_batchcode := 'Computer Science'; Write(f,Student); Close(f); end.
После компиляции и запуска программа создаст файл с именем student.dat в рабочем каталоге. Вы можете открыть файл с помощью текстового редактора, такого как блокнот, чтобы просмотреть данные Джона Смита.
Чтение из файла
Мы только что создали и записали в файл с именем Students.dat. Теперь давайте напишем программу, которая будет считывать данные студента из файла —
program DataFiles; type StudentRecord = Record s_name: String; s_addr: String; s_batchcode: String; end; var Student: StudentRecord; f: file of StudentRecord; begin assign(f, 'students.dat'); reset(f); while not eof(f) do begin read(f,Student); writeln('Name: ',Student.s_name); writeln('Address: ',Student.s_addr); writeln('Batch Code: ', Student.s_batchcode); end; close(f); end.
Когда приведенный выше код компилируется и выполняется, он дает следующий результат —
Name: John Smith Address: United States of America Batch Code: Computer Science
Файлы как параметр подпрограммы
Pascal позволяет использовать файловые переменные в качестве параметров в стандартных и пользовательских подпрограммах. Следующий пример иллюстрирует эту концепцию. Программа создает файл с именем rainfall.txt и хранит некоторые данные об осадках. Затем он открывает файл, читает данные и вычисляет среднее количество осадков.
Обратите внимание, что если вы используете параметр файла с подпрограммами, он должен быть объявлен как параметр var.
program addFiledata; const MAX = 4; type raindata = file of real; var rainfile: raindata; filename: string; procedure writedata(var f: raindata); var data: real; i: integer; begin rewrite(f, sizeof(data)); for i:=1 to MAX do begin writeln('Enter rainfall data: '); readln(data); write(f, data); end; close(f); end; procedure computeAverage(var x: raindata); var d, sum: real; average: real; begin reset(x); sum:= 0.0; while not eof(x) do begin read(x, d); sum := sum + d; end; average := sum/MAX; close(x); writeln('Average Rainfall: ', average:7:2); end; begin writeln('Enter the File Name: '); readln(filename); assign(rainfile, filename); writedata(rainfile); computeAverage(rainfile); end.
Когда приведенный выше код компилируется и выполняется, он дает следующий результат —
Enter the File Name: rainfall.txt Enter rainfall data: 34 Enter rainfall data: 45 Enter rainfall data: 56 Enter rainfall data: 78 Average Rainfall: 53.25
Текстовые файлы
Текстовый файл на языке Pascal состоит из строк символов, каждая строка которых заканчивается маркером конца строки. Вы можете объявить и определить такие файлы как —
type file-name = text;
Разница между обычным файлом символов и текстовым файлом заключается в том, что текстовый файл делится на строки, каждая из которых заканчивается специальным маркером конца строки, автоматически вставляемым системой. В следующем примере создается и записывается в текстовый файл с именем contact.txt —
program exText; var filename, data: string; myfile: text; begin writeln('Enter the file name: '); readln(filename); assign(myfile, filename); rewrite(myfile); writeln(myfile, 'Note to Students: '); writeln(myfile, 'For details information on Pascal Programming'); writeln(myfile, 'Contact: Tutorials Point'); writeln('Completed writing'); close(myfile); end.
Когда приведенный выше код компилируется и выполняется, он дает следующий результат —
Enter the file name: contact.txt Completed writing
Присоединение к файлу
Присоединение к файлу означает запись в существующий файл, в котором уже есть некоторые данные, без перезаписи файла. Следующая программа иллюстрирует это —
program exAppendfile; var myfile: text; info: string; begin assign(myfile, 'contact.txt'); append(myfile); writeln('Contact Details'); writeln('[email protected]'); close(myfile); (* let us read from this file *) assign(myfile, 'contact.txt'); reset(myfile); while not eof(myfile) do begin readln(myfile, info); writeln(info); end; close(myfile); end.
Когда приведенный выше код компилируется и выполняется, он дает следующий результат —
Contact Details [email protected] Note to Students: For details information on Pascal Programming Contact: Tutorials Point
Функции обработки файлов
Free Pascal предоставляет следующие функции / процедуры для обработки файлов —
процедура Append (var t: Text);
Открывает файл в режиме добавления
Назначение процедуры (out f: file; const Name :);
Присваивает имя файлу
Назначение процедуры (out f: file; p: PChar);
Присваивает имя файлу
Назначение процедуры (out f: file; c: Char);
Присваивает имя файлу
Назначение процедуры (out f: TypedFile; const Name :);
Присваивает имя файлу
процедура Assign (out f: TypedFile; p: PChar);
Присваивает имя файлу
процедура Assign (out f: TypedFile; c: Char);
Присваивает имя файлу
Назначение процедуры (out t: Text; const s :);
Присваивает имя файлу
Назначение процедуры (out t: Text; p: PChar);
Присваивает имя файлу
Назначение процедуры (out t: Text; c: Char);
Присваивает имя файлу
процедура BlockRead (var f: file; var Buf; count: Int64; var Res: Int64);
Читает данные из файла в память
процедура BlockRead (var f: file; var Buf; count: LongInt; var Result: LongInt);
Читает данные из файла в память
процедура BlockRead (var f: file; var Buf; count: Cardinal; var Result: Cardinal);
Читает данные из файла в память
процедура BlockRead (var f: file; var Buf; count: Word; var var: Word);
Читает данные из файла в память
процедура BlockRead (var f: file; var Buf; count: Word; var Res: Integer);
Читает данные из файла в память
процедура BlockRead (var f: file; var Buf; count: Int64);
Читает данные из файла в память
процедура BlockWrite (var f: file; const Buf; Count: Int64; var Res: Int64);
Записывает данные из памяти в файл
процедура BlockWrite (var f: file; const Buf; Count: LongInt; var Result: LongInt);
Записывает данные из памяти в файл
процедура BlockWrite (var f: file; const Buf; Count: Cardinal; var Result: Cardinal);
Записывает данные из памяти в файл
процедура BlockWrite (var f: file; const Buf; Count: Word; var Res: Word);
Записывает данные из памяти в файл
процедура BlockWrite (var f: file; const Buf; Count: Word; var Result: Integer);
Записывает данные из памяти в файл
процедура BlockWrite (var f: file; const Buf; Count: LongInt);
Записывает данные из памяти в файл
Закрытие процедуры (var f: file);
Закрывает файл
процедура Close (var t: Text);
Закрывает файл
функция EOF (var f: file): Boolean;
Проверяет конец файла
функция EOF (var t: Text): Boolean;
Проверяет конец файла
функция EOF: Boolean;
Проверяет конец файла
function EOLn (var t: Text): Boolean;
Проверяет конец строки
функция EOLn: Boolean;
Проверяет конец строки
процедура Erase (var f: file);
Удаляет файл с диска
процедура Erase (var t: Text);
Удаляет файл с диска
функция FilePos (var f: file): Int64;
Положение в файле
функция FileSize (var f: file): Int64;
Размер файла
процедура Flush (var t: Text);
Записывает файловые буферы на диск
функция IOResult: Word;
Возвращает результат последней операции ввода-вывода файла
процедура Read (var F: Text; Args: Arguments);
Читает из файла в переменную
процедура Read (Аргументы: Аргументы);
Читает из файла в переменную
процедура ReadLn (var F: Text; Args: Arguments);
Читает из файла в переменную и перейти к следующей строке
процедура ReadLn (Args: Аргументы);
Читает из файла в переменную и перейти к следующей строке
процедура Rename (var f: file; const s :);
Переименовывает файл на диск
процедура Rename (var f: file; p: PChar);
Переименовывает файл на диск
процедура Rename (var f: file; c: Char);
Переименовывает файл на диск
процедура Rename (var t: Text; const s);
Переименовать файл на диске
процедура Rename (var t: Text; p: PChar);
Переименовывает файл на диск
процедура Rename (var t: Text; c: Char);
Переименовывает файл на диск
процедура Reset (var f: file; l: LongInt);
Открывает файл для чтения
Сброс процедуры (var f: file);
Открывает файл для чтения
процедура Reset (var f: TypedFile);
Открывает файл для чтения
процедура Reset (var t: Text);
Открывает файл для чтения
процедура Rewrite (var f: file; l: LongInt);
Открывает файл для записи
процедура переписать (var f: file);
Открывает файл для записи
процедура переписать (var f: TypedFile);
Открывает файл для записи
процедура переписать (var t: Text);
Открывает файл для записи
поиск процедуры (var f: file; Pos: Int64);
Устанавливает положение файла
function SeekEOF (var t: Text): Boolean;
Устанавливает позицию файла в конец файла
function SeekEOF: Boolean;
Устанавливает позицию файла в конец файла
function SeekEOLn (var t: Text): Boolean;
Устанавливает позицию файла в конец строки
function SeekEOLn: Boolean;
Устанавливает позицию файла в конец строки
процедура SetTextBuf (var f: Text; var Buf);
Устанавливает размер файлового буфера
процедура SetTextBuf (var f: Text; var Buf; Size: SizeInt);
Устанавливает размер файлового буфера
процедура Truncate (var F: file);
Усекать файл в позиции
процедура Write (Аргументы: Аргументы);
Записывает переменную в файл
процедура Write (var F: Text; Args: Arguments);
Записать переменную в файл
процедура Writeln (Аргументы: Аргументы);
Записывает переменную в файл и добавляет новую строку
процедура WriteLn (var F: Text; Args: Arguments);
Записывает переменную в файл и добавляет новую строку