- •Лабораторная работа №13.
- •Тема: Файлы в Visual Basic.
- •Теоретическая часть.
- •Традиционный подход при работе с файлами
- •Открытие файлов
- •Input #номер_файла, имя_переменной1, имя_переменной2, …
- •Переход на заданную позицию в файле
- •Запись данных
- •Работа с файлами произвольного доступа
- •Чтение данных из файла произвольного доступа
- •Seek #номер_файла, позиция
- •Запись в файл произвольного доступа
- •Изменение данных в файле произвольного доступа
- •Работа с двоичными файлами
- •Пример двоичного файла
- •Замечание
Изменение данных в файле произвольного доступа
Для изменения данных в записях файла (редактирование, добавление, удаление записей) применяется оператор Put #. При его использовании необходимо иметь в виду, что данные в записи будут заменены на те, которые мы передаем в файл. Подчеркнем, что новая запись с данными не создается.
Для добавления записей в файл необходимо указывать номер записи на единицу больший номера последней записи. В этом случае запись будет добавлена в файл, а не изменена. Например:
Put #номер_файла, последняя_запись + 1, имя_переменной
Для вычисления текущего номера последней записи можно использовать длину записи и размер файла, возвращаемый функцией LOF.
Перейдем к описанию процесса удаления данных из файла произвольного доступа. Существуют два способа. Можно просто очистить соответствующие поля указанных записей, то есть записать в них пустые значения. Однако в этом случае в файле остаются пустые записи. Понятно, что при таком подходе ресурсы (дисковое пространство) используются нерационально.
Для окончательного удаления записей рекомендуется перезаписывать данные в новый файл, пропуская пустые записи. Алгоритм этих действий таков:
1. Создайте новый файл с помощью оператора Open.
2. Перепишите все непустые записи в новый файл, используя оператор Put #.
3. Закройте исходный файл и удалите его при помощи оператора Kill.
4. Переименуйте новый файл в исходный оператором Name.
Получаем тот же самый файл, но уже без пустых записей. При этом экономится пространство диска и время поиска данных в таком файле.
Работа с двоичными файлами
Двоичный файл в корне отличается от файлов последовательного и произвольного доступа. Посмотрите на рисунок. Здесь в качестве примера двоичного файла с помощью редактора Notepad системы Windows открыт выполняемый файл Visual Basic 6.
Пример двоичного файла
Из рисунка видно, что нет смысла просматривать файл в чистом виде, его понимает только специальная программа. Двоичный файл не организован в строки, как файл последовательного доступа. Здесь нельзя выделить строки, записи или иную информационную структуру кроме байтов или блоков байтов.
Двоичный файл открывается только в двух режимах:
Binary — двоичный доступ по номеру байта;
Random — произвольный доступ.
Для режима доступа Random к двоичным файлам, в отличие от файлов произвольного доступа, запись не имеет строго заданного размера и обычно вычисляется по соответствующему алгоритму или хранится в записях файла.
Работа с двоичными файлами отличается большей свободой выполнения различных действий, чем с файлами последовательного доступа. В отличие от файлов последовательного доступа, двоичный файл открывается сразу и для чтения, и для записи.
Открытие двоичного файла
Двоичный файл открывается иначе, чем файл последовательного доступа. Синтаксис оператора Open для двоичного файла выглядит следующим образом:
Open имя_файла For Binary As номер_файла
где:
имя_фалйа — полное имя файла;
номер_файла — номер файла.
Чтение данных из двоичных файлов
Чтение данных из двоичных файлов выполняется с помощью оператора Get #, имеющего следующий синтаксис:
Get #номер_фалйа, [номер_записи], имя_переменной
где:
номер_файла — номер файла;
номер_записи — размер записи в байтах;
имя_переменной — переменная, в которую читаются данные из файла.
Запись данных в двоичные файлы
Для записи данных в двоичные файлы используется оператор Put #, имеющий следующий синтаксис:
Put [#]номер_файла, [номер_записи], имя_переменной
где:
номер_файла — номер файла;
номер_записи — размер записи в байтах;
имя_переменной — переменная, в которой хранятся данные, записываемые в файл.
Позиционирование в двоичном файле выполняется так же, как в файле последовательного доступа.
Оператор Put # работает в паре с оператором Get #.
Работа с атрибутами файлов
Для работы с атрибутами файлов используются функции GetAttr и SetAttr. Синтаксис функции GetAttr, возвращающей атрибуты файлов, следующий:
GetAttr (имя_файла)
где имя_файла — путь, включающий имя файла, папку, устройство. По умолчанию применяется текущая папка и устройство.
Функция GetAttr возвращает число, которое определяет атрибуты файла. Интерпретировать это число можно при помощи параметров, описанных в табл. 3.
Таблица 3. Константы атрибутов файлов
Константа |
Описание |
Значение |
vbNormal |
Обычный файл |
0 |
vbReadOnly |
Файл только для чтения |
1 |
vbHidden |
Скрытый файл |
2 |
vbSystem |
Системный файл |
4 |
vbDirectory |
Каталог (папка) |
16 |
vbArhive |
Архивный файл |
32 |
Аналогично работает функция setAttr, выполняющая установку атрибутов файлов. Синтаксис этой функции следующий:
SetAttr имя_файла, атрибуты
где:
имя_файла — путь, включающий имя файла, папку, устройство. По умолчанию используется текущая папка и устройство;
атрибуты— число или выражение, задающее сумму атрибутов.