ВУЗ:
Составители:
Рубрика:
51
Бестиповые файлы
Стандарт Турбо Паскаля вводит особый файловый тип, являющийся,
по сути, обобщенным файловым типом. Мы будем называть его в дальней-
шем бестиповым файлом, поскольку его обозначение состоит только из слова
File без указания типа компонент.
Бестиповый файл - это очень мощное средство работы с файлами, так
как он позволяет манипулировать с данными, не задумываясь об их типе. С
его помощью можно записывать на диск произвольные участки рабочей па-
мяти ПЭВМ и считывать их в память диска. Можно также преобразовывать
считываемые из бестипового файла данные в любой формат посредством
приведения типов. В этом разделе будут рассмотрены некоторые примеры
использования бестиповых файлов.
Ввод - вывод в бестиповый файлы осуществляется специальными про-
цедурами BlockRead и BlockWrite. Кроме того, расширяется синтаксис
процедур Reset и Rewrite. В остальном, принципы работы остаются такими
же, как и с типизированными файлами. Перед использованием файловая пе-
ременная f (логический файл)
var
f: File;
должна быть связана с конкретным физическим файлом через вызов операто-
ра Assign. Далее файл должен быть открыт для чтения или записи с помощью
вызова процедуры Reset(f) или Rewrite(f) соответственно. После окончания
работы файл должен быть закрыт процедурой Close(f).
Открывая бестиповый файл для работы, мы неявно устанавливаем раз-
мер буфера передачи данных равным 128 байт. Однако можно явным
способом указать иной размер буфера (чем он больше, тем быстрее происхо-
дит ввод - вывод), исходя из ресурсов памяти и удобства работы с данными.
Для задания буфера надо после оператора Assign открывать файл расширен-
ной записью процедур:
Reset (var f: File; BufSize: Word)
и
Rewrite (var f: File; BufSize: Word).
Параметр BufSize задает число байтов, считываемых из файла за одно
обращение к нему или записываемых в него. Чем больше значение BufSize,
тем быстрее происходит обмен данными между носителем файла (как прави-
52
ло, диском) и оперативной памятью ПЭВМ. Но тем больше и расход памяти.
Ведь именно в ней располагается буфер файла.
Минимальный блок, который может быть записан или прочитан из
файла, это 1 байт. Чтобы задать его, надо установить именно такую величину
буфера при открытии файла. Максимальный размер блока не может превы-
шать 64К.
Во время отладки программ в среде Турбо Паскаль можно проверить
размер буфера, поместив в окно просмотра (Watch) или анализа (Evaluate)
файловую переменную f, приведенную к типу FileRec (для этого может пона-
добиться подключение модуля DOS):
FileRec (f),R
или, конкретнее,
FileRec(f), BufSize
Для чтения или записи данных в бестиповый файл стандартные проце-
дуры Read и Write не годятся. Их заменяют здесь процедуры:
BlockRead (var f: File; var Destin; Count: Word
[; var Re: Word])
BlockWrite (var f: File; var Source; Count:
[; var Wr: Word]).
Эти процедуры осуществляют чтение в переменную Destin и запись из
переменной Source не компонентов файла или его строк, а блоков, состоящих
из того количества байтов, которое определено для буфера файла f. Значение
Count, меньшее единицы, не имеет смысла. Всегда должно выполняться ус-
ловие:
Count Размер_буфера<64К.
Необязательный параметр Re возвращает число блоков, считанное те-
кущей операцией BlockRead. Аналогичный параметр Wr процедуры
BlockWrite после каждой операции записи показывает число блоков, запи-
санное в данный файл этой операцией.
Если операции записи или чтения прошли успешно, то значения Re и
Wr будут равны соответствующим значениям параметров Count. Но если
произошел сбой при вводе- выводе, и заказанное число блоков не перене-
слось, то параметры Re и Wr будут содержать целое число удачно
перенесенных блоков (неудача посередине блока практически равносильна
отмене его чтения или записи). Таким образом, эти параметры могут исполь-
зоваться для контроля выполнения операций BlockRead и BlockWrite:
Бестиповые файлы ло, диском) и оперативной памятью ПЭВМ. Но тем больше и расход памяти.
Ведь именно в ней располагается буфер файла.
Минимальный блок, который может быть записан или прочитан из
Стандарт Турбо Паскаля вводит особый файловый тип, являющийся,
файла, это 1 байт. Чтобы задать его, надо установить именно такую величину
по сути, обобщенным файловым типом. Мы будем называть его в дальней-
буфера при открытии файла. Максимальный размер блока не может превы-
шем бестиповым файлом, поскольку его обозначение состоит только из слова
шать 64К.
File без указания типа компонент.
Во время отладки программ в среде Турбо Паскаль можно проверить
Бестиповый файл - это очень мощное средство работы с файлами, так
размер буфера, поместив в окно просмотра (Watch) или анализа (Evaluate)
как он позволяет манипулировать с данными, не задумываясь об их типе. С
файловую переменную f, приведенную к типу FileRec (для этого может пона-
его помощью можно записывать на диск произвольные участки рабочей па-
добиться подключение модуля DOS):
мяти ПЭВМ и считывать их в память диска. Можно также преобразовывать
FileRec (f),R
считываемые из бестипового файла данные в любой формат посредством
или, конкретнее,
приведения типов. В этом разделе будут рассмотрены некоторые примеры FileRec(f), BufSize
использования бестиповых файлов. Для чтения или записи данных в бестиповый файл стандартные проце-
Ввод - вывод в бестиповый файлы осуществляется специальными про- дуры Read и Write не годятся. Их заменяют здесь процедуры:
цедурами BlockRead и BlockWrite. Кроме того, расширяется синтаксис BlockRead (var f: File; var Destin; Count: Word
процедур Reset и Rewrite. В остальном, принципы работы остаются такими [; var Re: Word])
же, как и с типизированными файлами. Перед использованием файловая пе- BlockWrite (var f: File; var Source; Count:
[; var Wr: Word]).
ременная f (логический файл)
Эти процедуры осуществляют чтение в переменную Destin и запись из
var
переменной Source не компонентов файла или его строк, а блоков, состоящих
f: File;
должна быть связана с конкретным физическим файлом через вызов операто- из того количества байтов, которое определено для буфера файла f. Значение
ра Assign. Далее файл должен быть открыт для чтения или записи с помощью Count, меньшее единицы, не имеет смысла. Всегда должно выполняться ус-
вызова процедуры Reset(f) или Rewrite(f) соответственно. После окончания ловие:
работы файл должен быть закрыт процедурой Close(f). Count Размер_буфера<64К.
Открывая бестиповый файл для работы, мы неявно устанавливаем раз- Необязательный параметр Re возвращает число блоков, считанное те-
мер буфера передачи данных равным 128 байт. Однако можно явным кущей операцией BlockRead. Аналогичный параметр Wr процедуры
способом указать иной размер буфера (чем он больше, тем быстрее происхо- BlockWrite после каждой операции записи показывает число блоков, запи-
дит ввод - вывод), исходя из ресурсов памяти и удобства работы с данными. санное в данный файл этой операцией.
Для задания буфера надо после оператора Assign открывать файл расширен- Если операции записи или чтения прошли успешно, то значения Re и
ной записью процедур: Wr будут равны соответствующим значениям параметров Count. Но если
Reset (var f: File; BufSize: Word) произошел сбой при вводе- выводе, и заказанное число блоков не перене-
и слось, то параметры Re и Wr будут содержать целое число удачно
Rewrite (var f: File; BufSize: Word). перенесенных блоков (неудача посередине блока практически равносильна
Параметр BufSize задает число байтов, считываемых из файла за одно отмене его чтения или записи). Таким образом, эти параметры могут исполь-
обращение к нему или записываемых в него. Чем больше значение BufSize, зоваться для контроля выполнения операций BlockRead и BlockWrite:
тем быстрее происходит обмен данными между носителем файла (как прави-
51 52
Страницы
- « первая
- ‹ предыдущая
- …
- 24
- 25
- 26
- 27
- 28
- …
- следующая ›
- последняя »
