Процедуры и функции для работы с файлами любого типа
Переменные файлового типа используются в программе только в качестве параметра собственных и стандартных процедур и функций. Все фактические действия с файлами основаны на наборе стандартных процедур языка, входящих в состав модулей System и Dos. Сначала рассмотрим процедуры модуля System. Напомним, что он подключен к программам по умолчанию, то есть его не требуется подключать к программе в разделе Uses. До начала работы с файлами устанавливается связь файловой переменной МуFilе с именем дискового файла. Очень важно различать собственно файл (область памяти на магнитном носителе с некоторой информацией) и переменную файлового типа в некоторой Turbo Pascal-программе. Считается, что файловая переменная является представителем некоторого дискового файла в программе. Для того, чтобы реализовать доступ к файлу на магнитном диске, программа должна связать его с файловой переменной. Для этого необходимо сопоставить переменную с именем файла. Это имя представляется в виде строки, содержащей полное имя файла и, может быть, маршрута к файлу, который формируется по общим правилам MS-DOS. Например, assign (МуFilе, 'с:\МуDirectory\Result.dat'); здесь приведено полное (с указанием пути) имя пользовательского файла Result.dat. Если путь не указан, программа будет искать файл только в своем рабочем каталоге и, как это принято в системе DOS, по указанным в файле аutoехес.bat путям. Кроме указания имени файла на дисковом накопителе может быть указано стандартное имя одного из устройств ввода-вывода: «соn» - консоль, то есть дисплей и клавиатура, «рrn» - или «lpt1» - принтер. Не разрешается связывать с одним физическим файлом различные файловые переменные в программе. До тех пор, пока файловая переменная не связана с каким-либо дисковым файлом, никакие операции с ней в программе невозможны. Заметим, что можно связать файловую переменную с еще не существующим дисковым файлом. Это делается в случае последующего создания Turbo Pascal-программой файла с данным именем с помощью специальной системной процедуры.
После того, как файловая переменная с помощью процедуры Аssign связана с конкретным дисковым файлом, можно выполнить любую допустимую операцию с ним. Все файлы, открытые в результате работы программы, должны быть закрыты при завершении программы процедурой closе (МуFilе); При выполнении этого оператора закрывается физический файл на диске и фиксируются изменения, связанные с использованием данного файла. Обратите внимание на необходимость закрытия файлов во всех ветвях программы, в том числе в различных аварийных ситуациях. Незакрытые файлы нарушают файловую структуру на диске, что может приводить к серьезным проблемам с настройкой компьютера. Открытие нового файла для записи производится процедурой, единственный аргумент которой - переменная файлового типа, например: rewrite (МуFilе); Эта процедура создает на диске новый файл, имя которого связано с переменной МуFilе процедурой Аssign. Указатель работы с файлом помещается в начальную позицию. Внимание! Если файл с таким именем уже существует, он становится пустым, то есть его предыдущее содержание теряется. После выполнения процедуры rewrite файл доступен как для записи, так и для чтения. Подготовку существующего файла для чтения и записи выполняет процедура reset (МуFilе); Эта процедура ищет уже существующий файл на диске и открывает его для работы, помещая указатель в начальную позицию. Если файл с установленным в Аssign именем не найден, возникает ошибка ввода/вывода, контроль которой зависит от директивы компилятора {$I} (смотрите ниже).
Внимание! Файл в данный момент времени может быть в одном из двух состояний: либо только для записи, либо только для чтения. Запись в файл производится процедурой write (МуFilе, var1, var2,...., varN); Первый аргумент этой процедуры - переменная файлового типа, далее следует список записываемых переменных, которые должны соответствовать обьявленному типу файла. При выполнении этой операции текущий указатель файла смещается на число позиций, равное числу переменных. Чтение из файла производится аналогичной процедурой: read (МуFilе, var1, var2,...., varN); Положение элементов в файле нумеруется, начиная с номера 0 для первого элемента. После последнего элемента файла автоматически записывается признак конца файла. Функция FileSize(МуFilе) определяет число элементов в файле. Функция логического типа ЕОF(МуFilе) имеет значение Тrие, если указатель указывает на маркер конца файла (End Of file). Длина файла, то есть количество элементов в этой последовательности - величина произвольная, изменяемая в процессе работы. Работа с файлами заключается в записи и считывании элементов этой последовательности. Для того, чтобы указать, с каким элементом файла производятся операции, существует понятие указателя на доступный элемент файла. Пример. Приведем шаблон программы для записи данных в файл Program Writing; Примечание. В цикле могут быть вычислительные процедуры для получения данных, выводимых в файл. Мы, для простоты, записали в файл счетчик цикла. Внимание! Следует запомнить, что процедура rewrite обнулит файл, если файл с таким именем уже есть в рабочем каталоге, поэтому при выборе имен файлов соблюдайте осторожность. Задание 1. Наберите предложенную для рассмотрения выше программу и дополните ее выводом на экран элементов файла (воспользуйтесь процедурой считывания из файла read и вывода write). Результат покажите учителю для оценки.
Задание 2. Создайте программу записи и чтения типизированного файла типа string. Примеры решения задач Рассмотрите примеры решения задач. Наберите тексты программ, проверьте их действие. Обратите внимание на комментарий. Выполните задания к задачам. Задача 1. Дан файл, элементами которого являются целые числа. Найти среднее арифметическое элементов файла. В примере решается задача считывание элементов из файла, их суммирование и нахождение среднего арифметического. Предполагается, что типизированный файл уже создан. Задание. Дополните содержание текста задачи созданием типизированного файла file.dat. Добавленные строчки программы прокомментируйте. Program Srednee; Задача 2. Наберите на компьютере и рассмотрите текст программы, сформулируйте решаемую в ней задачу, дополните необходимыми операторами и комментарием. Покажите результат учителю для оценки. Program FileString; Задача 3. Создать типизированный файл, содержащий информацию о работниках института. Задание. Дополнить текст программы
Program TipRecord;
Воспользуйтесь поиском по сайту: ©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...
|