Запись в файл произвольного доступа
Для записи данных в файл произвольного доступа используется оператор Put #, имеющий следующий синтаксис:
Put #номер_файла, [номер_записи], имя_переменной
где:
номер_файла — номер файла, аналогичный номеру в операторе open;
номер_записи— целочисленное выражение, которое задает номер записи в файле;
имя_переменной — переменная, указывающая источник записываемых данных.
Этот оператор используется только для файлов произвольного доступа и бинарных. Если номер записи не указан, то по умолчанию принимается текущая позиция указателя записи.
При использовании оператора Put необходимо иметь в виду, что данные в записи с указанным в операторе номером будут заменены на те, которые мы записываем в файл. Добавление записей выполняется при помощи этого же оператора, но с некоторыми особенностями. Об этом речь пойдет в следующем разделе.
Рассмотрим небольшой пример. Воспользуемся приложением MyFileApp, изменив его следующим образом:
1. Измените наименование кнопки Выполнить на Запись.
2. Добавьте в форму еще одну кнопку управления.
3. Присвойте созданной кнопке наименование cbRead, используя свойство Name.
4. В свойство Caption введите значение Чтение.
5. Добавьте в приложение программный модуль, воспользовавшись командой Add Module (Добавить модуль) из меню Project (Проект).
6. В код модуля введите текст описания пользовательского типа данных:
Type Phis Face
PhisFaseID As Integer
FIO As String * 50
End Type
7. Откройте окно редактора кода и замените находящийся там код на следующий:
Dim ForFileRecords As PhisFace
Dim nRecNo As Integer
Private Sub SaveRecord ()
Open "C:\FilePF.dat" For Random As #1 Len = Len(ForFileRecords)
ForFileRecords.PhisFaseID = txtNumber.Text
ForFileRecords.FIO = txtFile.Text
Put #1, nRecNo, ForFileRecords
nRecNo = nRecNo + 1
Close #1
End Sub
Private Sub ReadRecord ()
Open "C:\FilePF.dat" For Random As #1 Len = Len(ForFileRecords)
Get #1, nRecNo, ForFileRecords
txtNumber.Text = ForFileRecords.PhisFaseID
txtFile.Text = ForFileRecords.FIO
nRecNo = nRecNo + 1
Close #1
End Sub
Private Sub Form Load()
nRecNo = 1
End Sub
Private Sub cbStart_Click()
Call SaveRecord
End Sub
Private Sub cbRead_Click()
Call ReadRecord
End Sub
В тексте этого кода мы объявили переменные ForFileRecords пользовательского типа для описания структуры файла и nRecNo в качестве счетчика записей. Открывая файл с доступом Random и указанием длины записи в соответствии с длиной переменной ForFileRecords, мы создаем файл требуемой структуры.
8. Запустите приложение. При нажатии кнопки Запись выполняется запись содержимого текстовых полей в файл созданной структуры. При нажатии кнопки Чтение эти данные можно прочитать в текстовом поле последовательно по записям, начиная с первой. При этом каждая кнопка вызывает собственную процедуру выполнения действия.
- Лабораторная работа №13.
- Тема: Файлы в Visual Basic.
- Теоретическая часть.
- Традиционный подход при работе с файлами
- Открытие файлов
- Input #номер_файла, имя_переменной1, имя_переменной2, …
- Переход на заданную позицию в файле
- Запись данных
- Работа с файлами произвольного доступа
- Чтение данных из файла произвольного доступа
- Seek #номер_файла, позиция
- Запись в файл произвольного доступа
- Изменение данных в файле произвольного доступа
- Работа с двоичными файлами
- Пример двоичного файла
- Замечание