Позиционирование на запись в файле

Ввод информации из файла

1. Чтение данных из последовательного файла Чтение выполняется оператором:

Input #номер_файла; <список_переменных>

Двойные кавычки при считывании игнорируются, выполняется проверка соответствия типов данных переменных и файла.

Пример 19.32. Запись в файл произвольного доступа

Текст программы Комментарий
Open "FILE" For Input As #1 Do While Not EOF(1) Input #1; MyString; MyNumber Debug.Print MyString; MyNumber Loop Close #1 Открытие файла Цикл до конца файла Чтение данных записи в переменные Печать считанных данных Конец цикла Закрытие файла

Другим оператором чтения из последовательного файла является

Line Input #номер_файла; <переменная>

Оператор обеспечивает посимвольное считывание данных строки по файлу до обнаружения символа "возврат каретки" (Сhг(13)) и присвоение этих данных указанной переменной символьного типа.

Пример 19.33. Построчное чтение из файла последовательного доступа

Текст программы Комментарий
Open "TESTFILE" For Input As #1 Do While Not EOF(1) Line Input #1, TestLine Debug.Print TextLine Loop Close #1 Открытие файла Цикл, пока не достигнут конец файла Чтение строки в переменную Печать в окне Debug Конец цикла Закрытие файла

2. Чтение данных из файла произвольного доступа

Данный оператор обеспечивает считывание записи файла произвольного доступа в указанную переменную:

Get Put [#номер_файла; [#записи],<переменная>

Пример 19.34. Чтение из файла произвольного доступа

Текст программы Комментарий
Type Record Объявление пользовательского типа данных для записи
ID As Integer Name As String * 20 End Type  
Dim MyRecord As Record Объявление переменной на основе пользовательского типа данных
Open "FILE" For Random As #1 Len=Len(MyRecord) Открытие файла произвольного доступа с длиной, соответствующей длине объявленного типа
Psition=3 Get #1, Position, MyRecord Close #1 Задание номера ( индекс) записи Формирование содержимого записи Закрытие файла

Позиция в записи (номер байта или номер записи) для очередного чтения или записи в файл устанавливается оператором:

Seek [#] номер_файла; позиция

где позиция.- число в диапазоне номеров байтов (1-2147483 647) файла.

Для файла, открываемого в режиме последовательного доступа, с помощью оператора SEEK определяется байт.

Пример 19.35. Позиционирование в файле последовательного доступа

Текст программы Комментарий
Dim MyChar As String Объявление переменной на основе пользовательского типа данных
Open "FILE" For Input As #1 Открытие файла произвольного доступа с длиной, соответствующей длине объявленного типа
MaxSize=LOF(1) Вычисление количества байтов в файле
For NextChar- MaxSize To Step -1 Организация цикла для последовательного считывания записей от конца файла к его началу
Seek #1, NextChar MyChar= Input(1,#1) Next NextChar  
Close #1 Закрытие файла

Для файла, открываемого в режиме произвольного доступа, определяется очередной номер записи, с которой будет работать программа.

Пример 19.36. Позиционирование в файле произвольного доступа

Текст программы Комментарий
Type Record Объявление пользовательского типа данных для записи
ID As Integer Name As String * 20 End Type  
Dim MyRecord As Record Объявление переменной на основе пользовательского типа данных
Open "FILE" For Random As #1 Len=Len(MyRecord) Открытие файла произвольного доступа с длиной, соответствующей длине объявленного типа
MaxSize=LOF(1)\ Len(MyRecord) Get For RecordNumber=MaxSize To 1 Step-1 Вычисление количества записей в файле Организация цикла для последовательного считывания записей от конца файла к его началу
Seek #1, RecordNumber Get #1, , MyRecord Next RecordNumber  
Close #1 Закрытие файла