Для организации данных на внешнем носителе используются файлы. Файл– это поименованная совокупность логически связанных данных, хранящихся на запоминающем устройстве компьютера.
Object Pascal располагает средствами создания и обработки файлов различных типов. Для того чтобы получить доступ к файлу, нужно иметь возможность связать созданное в Delphi приложение с некоторым файлом для чтения или записи информации. Эта связь создается при помощи переменных файлового типа - файловых переменных.
В Object Pascal существует три файловых типа:
TextFile – текстовый файл, представляющий собой набор символьных строк переменной длины;
File of <тип>– типизированный файл, представляющий собой набор данных указанного типа;
File – нетипизированный файл, представляющий собой набор неструктурированных данных.
Рассмотрим некоторые приемы работы с типизированными файлами.
Перед использованием файловой переменной она должна быть связана с внешним файлом с помощью вызова процедуры AssignFile:
AssignFile (<файловая переменная>, <имя файла>);
Здесь <файловая переменная> – имя переменной, объявленной в программе как переменная файлового типа;
<имя файла> – символьная строка, содержащая имя файла.
Если файл располагается не в одной папке с программой, то необходимо указать полный путь к файлу.
Когда связь с внешним файлом установлена, его можно открыть для ввода или вывода данных с помощью процедуры Reset:
Reset (<имя файла>);
Эта процедура открывает существующий внешний файл, имя которого было связано с файловой переменной.
Новый файл можно создать и открыть для записи с помощью процедуры Rewrite:
Rewrite(<файловая переменная>);
Последовательный доступ к записям файла осуществляется с помощью процедур Read и Write.
Read (<файловая переменная>, список ввода) чтение записи файла.
Write (<файловая переменная>, список вывода) вывод записи в файл.
Список ввода и список вывода должны иметь данные того же типа, что и компоненты файла.
Прямой доступ к типизированным файлам можно организовать с помощью стандартной процедуры Seek, которая перемещает указатель файла к заданному элементу. Для определения текущей записи в файле и текущего размера файла используются стандартные функции FilePos и FileSize.
Procedure Seek (var F; N; Longint); перемещает текущую позицию в типизированном файле, связанном с файловой переменной F к компоненту с номером N. Нумерация компонентов в файле начинается с 0.
function FilePos (var F): Longint; Возвращает номер текущего компонента в файле, связанном с файловой переменной F.
function FileSize (var F): Integer; Возвращает количество компонентов в файле, связанном с файловой переменной F.
По завершении обработки файла он должен закрываться с помощью стандартной процедуры CloseFile.
CloseFile (<файловая переменная>);
При закрытии файла обеспечивается сохранение в файле всех новых записей и регистрация файла в папке. Процедура CloseFile не разрывает связь файла с файловой переменной, поэтому файл можно открывать снова без повторного использования процедуры AssignFile.
Пример создания приложения
Задание. Создать Windows-приложение для формирования списка очередности предоставления мест в общежитии. Общежитие в первую очередь предоставляется тем студентам, у которых доход на одного члена семьи меньше минимальной зарплаты (в порядке возрастания дохода на одного члена семьи), затем – остальным студентам в порядке убывания среднего балла. Исходные данные, которые следует организовать в виде файла, должны содержать фамилию и инициалы студента, доход на одного члена семьи и четыре оценки, полученные на экзаменах последней сессии. Создать текстовый файл исходных данных.
9.2.1. Указания по созданию приложения
Для нового проекта создайте новую папку, например X:\35эи\ lab9.
Сохраните проект File | Save Project As… (Файл | Сохранить Проект как…).Далее сохраните модуль под именем UnFile, а файл проекта – под именем PrFile.