- •Внешние файлы
- •7.1Цель работы
- •7.2Задание
- •7.3Теоретические сведения
- •Структура физического файла
- •Структура логических файлов
- •Доступ к файлу, операции с файлами
- •Установка связи
- •Инициация файла
- •Процедуры чтения-записи
- •Закрытие доступа к файлу
- •Вспомогательные функции
- •Компоненты категории Dialogs
- •Основные свойства и методы tOpenDialog и tSaveDialog
- •Обработка типизованных файлов
- •Пример 1. Запись массива в типизованный файл
- •Пример 2. Запись в файл с использованием диалога
- •Пример 3. Чтение из типизованного файла
- •Пример 4. Чтение из типизованного файла с контролем ошибок
- •Обработка текстовых файлов Пример 5. Запись в тестовый файл
- •Пример 6. Добавление записей в конец тестового файла
- •Пример 7. Обработка текстового файла
- •Нетипизованные файлы
- •7.4Содержание отчета
- •7.5Контрольные вопросы
Доступ к файлу, операции с файлами
Для работы с файлами необходимо:
Установить связь между физическим файлом и логическим.
Инициировать файл – открыть доступ к файлу и указать для него направление передачи данных.
Операции с файлом (чтение, запись).
Закрыть доступ к файлу.
Установка связи
AssignFiie(var f, FileName: string) - процедура устанавливает связь файловой переменной с именем внешнего файла.
f - файловая переменная (правильный идентификатор, объявленный в
программе как переменная любого файлового типа) ;
FileName - строковая переменная или константа, содержащая имя файла и,
если это необходимо, полный путь доступа к нему согласно правилам
MS-DOS.
AssignFile(F, ‘MyFile.Dat’); Файл находится в текущем каталоге.
Файл находится в другом каталоге.
Name := ‘D:\Stud\Ivan\My_F2.Dat’;
AssignFile( F2, Name);
Инициация файла
Инициировать файл – открыть доступ к файлу и указать для него направление передачи данных. Файл можно открыть как для чтения, так и для записи информации. Одновременно можно открыть несколько файлов.
Reset (Var F [: File; RecSize: Word ]) – открывает текстовые и нетипизованные файлы F только для чтения, если файл типизованный, то – как для чтения так и для записи. RecSize – определяет размер блока для передачи данных, если параметр не указан, то – 128 байт.
Rewrite(Var F [: File; RecSize: Word ]) – создаёт новый физический файл для записи, имя которого будет связано с файловой переменной F. Если файл уже существует, то он удаляется, а на его месте создаётся новый пустой файл.
Append(F) - открывает существующий файл для добавления записей в конец файла.
Процедуры чтения-записи
Read(F , V1 [, список_считывания ] ) - считывает одно V1 или несколько значений из файла, определяемого файловой переменной F и присваивает эти значения переменным в порядке, определяемом списком.
ReadLn(F , V1 [, список_считывания ] ) - расширение Read и отличается тем, что после считывания данных одного списка, при следующем обращении к ReadLn данные будут считываться с начала новой строки.
Write(F , V1 [, список_записи ] ) - записывает одно или несколько значений в соответствии со списком в файл, определяемый файловой переменной.
WriteLn((F , V1 [, список_записи ] ) - расширение Write, после записи переменных из списка при следующем обращении к Write данные будут записаны со следующей строки.
Закрытие доступа к файлу
CloseFile(F) - закрывает файл, однако связь файловой переменной F с именем файла сохраняется, что позволяет повторно открыть файл без повторного обращения к процедуре AssignFile. При нормальном завершении программы процедуры Close выполняются автоматически, без обращения к ним.
Вспомогательные функции
FileSize(var F): Integer - функция возвращает размер файла. Размер типизованного файла выражен как количество записей указанного типа. F - файловая переменная. Функцию нельзя использовать для текстовых файлов.
IOResult: Integer – используют для контроля ошибок доступа к файлу. IOResult возвращает 0, если доступ к файлу открыт, если доступ не установлен, то IOResult возвращает код ошибки 100..106. Функция IOResult доступна только при включённом контроле ошибок {$I+}.
Значения функции IOResult
100 Ошибка чтения. Несоответствие количества считываемых элементов длине файла.
101 Ошибка записи, возможно диск переполнен.
102 Файл не назначен, или удалён, или переименован.
103 Файл не открыт.
104 Файл не открыт для ввода.
105 Файл не открыт для вывода.
106 Недопустимый числовой формат.
{$I-}, {$I+} - директивы компилятору на отключение {$I-} или включение {$I+} контроля ошибок ввода-вывода при попытке открыть для чтения файл.
FilePos(var F): Longint – возвращает значение текущей позиции в типизованных файлах. Если текущей позицией является начало файла, то возвращается 0, если конец файла (Eof(F)=0), то FilePos(F) возвращает значение, совпадающее с размером файла (FileSize(var F)).
Eof (var F): Boolean - функция возвращает true, если текущая позиция является концом файла, F - файловая переменная, которая была открыта для чтения.
Eoln(var F: Text): Boolean – функция возвращает для текстовых файлов true, если текущая позиция является концом строки.
Seek(var F; N: Longint) – процедура перемещает текущую позицию в типизованном файле в позицию N, счёт позиций от 0, F - файловая переменная. Процедуру нельзя использовать для текстовых файлов.
SeekEof(var F:Text): Boolean - функция устанавливает текущую позицию в конец файла и возвращает true, используют только для текстовых файлов.
SeekEoln(var: Text) - функция устанавливает текущую позицию в конец строки и возвращает true, используют только для текстовых файлов.
