
4.2. Последовательный доступ
При сохранении или чтении данных в Visual Basic нередко используются
последовательные файлы. Последовательный файл состоит из текстовых строк
ASCII-формата.
Для записи данных в последовательный файл необходимо открыть его в режиме
Output или Append. Если файл не существует, Visual Basic автоматически создает
его. Если же файл существует, то при его открытии в режиме Output существующие
данные стираются, а в режиме Append новые записи добавляются в конец файла.
Обычно файлы открываются для дополнения, но иногда они используются для
временного хранения данных. В таких случаях вполне допускается уничтожение
содержимого файла перед каждым применением.
Чтобы прочитать данные из последовательного файла, следует открыть его в
режиме Input.
Независимо от того, в каком режиме открывается файл — Input, Output или
Append, — для операций с ним используется файловый номер.
Для записи в файл можно воспользоваться оператором Print # (или Write #) для
чтения - Line Input # (а также оператором Input # или функцией Input).
Ниже приведен фрагмент программы, который создает в папке n:\data файл
test.txt и записывает в него две строки:
Dim fileno As Integer
fileno = FreeFile
Open "n:\data\test.txt" For Append As fileno
Print #fileno, "Это"
Print #fileno, "файл"
Close fileno
Функция FreeFile возвращает свободный файловый номер, который будет
использоваться в операторах Open, Print # и Close. Результаты выполнения
предыдущего фрагмента можно просмотреть в программах WordPad или Notepad.
Чтобы файл записывался заново, а не дополнялся (другими словами, что стереть
содержимое файла и внести в него новые данные), следует заменить Оutput
ключевым словом Append.
В следующем примере в массивы a() и b() загружается содержимое файла
n:\data\test.txt и затем в том же порядке выводится на форму.
Private Sub Command1_Click()
Dim fileno As Integer
Dim i As Integer, j As Integer, n As Integer
fileno = FreeFile
Open "n:\data\test.txt" For Input As fileno
Input #fileno, n
ReDim a(n, n) As Integer, b(n) As Integer
For i = 1 To n
For j = 1 To n
Input #fileno, a(i, j)
Next
Input #fileno, b(i)
Next
Form1.Print n
For i = 1 To n
For j = 1 To n
Form1.Print a(i, j),
Next
Form1.Print b(i)
Next
Close fileno
End Sub
При необходимости можно организовать окончание ввода данных при
достижении конца файла при помощи оператора EOF(fileno), например
Do Until EOF(fileno)
…
Конец файла помечается специальным ASCII-символом, который не
отображается на экране и добавляется в файл при его создании или дополнении.
Пример файлов ввода и вывода данных
Private Sub Command1_Click()
Dim flno As Integer
Dim i As Integer, j As Integer, n As Integer
flno = FreeFile
Open "j:\test.txt" For Input As flno
Input #flno, n
ReDim a(n, n) As Integer, b(n) As Integer
For i = 1 To n
For j = 1 To n
'ReDim Preserve a(i, j) As Integer
Input #flno, a(i, j)
Next
Input #flno, b(i)
Next
Form1.Print n
For i = 1 To n
For j = 1 To n
Form1.Print a(i, j),
Next
Form1.Print b(i)
Next
Close flno
End Sub
Private Sub Command2_Click()
Dim flno As Integer
flno = FreeFile
Open "s:\test.txt" For Output As flno
Print #flno, "Это"
Print #flno, "текстовый файл"
Print #flno, 1, 2, 5
Print #flno, 7, 8, 9
Close flno
End Sub