Лекция 3: 2 Для создания возможности использования объектов файловой системы нужно подключить библиотеку DLL, содержащую эти объекты: меню Разработать > Ccылки > Microsoft Scriptlet Component (сделать щелчок на соответствующем элементе управления CheckBox). Не могу найти меню Разработать (Develop)>Links и т.д. |
Работа с устройствами, папками, файлами
Работа с файлами: запись данных в файл, чтение из файла
Запись/чтение данных из приложения в файл проводится через коммуникационные каналы ввода/вывода. При открытии файлов им ставятся в соответствие каналы, имеющие номера. Есть ограничения на число открытых файлов. Функция FreeFile () возвращает номера свободных каналов (их можно использовать для открытия файлов).
Рассматриваются следующие типы доступа к файлам: последовательный, произвольный, двоичный
Последовательный (Sequential) доступ
При последовательном доступе записи считываются последовательно одна за другой; доступ применяется в основном при работе с текстовыми файлами. Сначала используется инструкция Open - открыть файл, синтаксис:
Open путь_имя_файла For Input |Output | Append [Share] As [#]номер_файла
- путь_имя_файла - путь и имя файла,
- Input - открыть файл для чтения,
- Output - открыть файл для записи,
- Append - открыть файл для добавления в него записей,
- As [#]номер_файла - присваиваемый номер; открытый файл после работы с ним должен быть закрыт и тот же самый номер может быть использован снова.
Инструкция Close [[#]номер_файла, [#]номер_файла :] используется для закрытия файла. Для записи/чтения используются инструкции Write/Input:
- Write #1, "A Happy New Millennium !!!", " : ", - запись данных, стоящих после запятой,
- Input #1, a1, a2, : - чтение данных из файла (a1, a2 : - переменные, разделeнные запятыми, в которые читаются данные из файла).
Input не позволяет считывать данные в элемент управления. В качестве переменных можно использовать элементы массива. Для записи может использоваться также инструкция:
Print #1, "A Happy New Millennium !!!", " : ".
Произвольный (Random) доступ
Этот вид доступа предполагает, что файл имеет постоянную структуру. В начале работы используется инструкция Open:
Open имя_файла For Random [Access - дост][Lock] As [#]ном_файла [Len = длина записи]
- имя_файла - имя файла,
- Access - доступ задаeт права доступа к файлу. Ниже даны типы доступа и соответствующие примеры:
- чтение - Open "file1.dat" For Random Access Read As #1,
- запись - Open "file1.dat" For Random Access Write As #1,
- чтение и запись -
- без указания - Open "file1.dat" For Random As #1,
- Lock определяет права доступа к открытому файлу пользователя/процесса при коллективном использовании:
- Shared - все процессы могут писать в файл и считывать из файла,
- Lock Read Write - запрет записи в файл и считывания из файла,
- Lock Read - запрет считывания из файла,
- Lock Write - запрет записи в файл,
- As [#]номер_файла - номер файла,
- Len определяет длину записи; если значение Len меньше реальной длины записи, то возникает ошибка.
Инструкция Close [[[#]номер_файла][, [#]номер_файла] :] используется для закрытия файла.
Для записи/чтения используются инструкции Put/Get:
Put [#]номер_файла, [номер записи] имя_переменной
- номер_файла - номер открытого файла,
- номер записи - номер записи, в которую начинается запись данных (записи нумеруются с 1. Если "номер записи" отсутствует, то подразумевается номер следующей записи; его пропуск указывается наличием вместо него запятой, например: Put #2,,),
- имя_переменной - имя переменной, содержащей данные, которые будут записаны в файл,
Get [#]номер_файла, [номер записи] имя_переменной
- номер_файла - номер открытого файла,
- номер записи - номер записи, с которой начнeтся считывание данных,
- имя_переменной - имя переменной, в которую проводится считывание.
Двоичный (Binary) доступ
Двоичный доступ в отличие от произвольного возможен не к определeнному набору данных, а к отдельному байту.