Для файлов, открытых в режиме Random, применимы те же правила, что и для инструкции Get. Исключения для режима Binary те же, что для инструкции Get.
В данном примере инструкция Put используется для записи данных в файл. В файл записываются пять записей определенного пользователем типа Record.
Type Record ’ Тип, определенный пользователем.
ID As Integer
Name As String * 20
End Type
Dim MyRecord As Record, RecordNumber ’ Объявляет переменную.
’ Открывает файл произвольного доступа.
Open «TESTFILE» For Random As #1 Len = Len(MyRecord)
For RecordNumber = 1 To 5 ′ Выполняет цикл 5 раз.
MyRecord.ID = RecordNumber ’ Определяет номер.
MyRecord.Name = «My Name» & RecordNumber ’ Создает строку.
Put #1, RecordNumber, MyRecord ’ Записывает запись в файл.
Next RecordNumber
Close #1 ′ Закрывает файл.
Функция Seek.
Возвращает значение типа Long, определяющее текущее положение указателя чтения/записи внутри файла, открытого с помощью инструкции Open.
Синтаксис: Seek(номерФайла)
Обязательный аргумент номерФайла является выражением типа Integer, содержащим допустимый номер файла.
Функция Seek возвращает значение в интервале от 1 до 2 147 483 647 (т.е. 2^31 — 1) включительно.
Ниже приведено описание значений, возвращаемых для каждого режима доступа к файлу.
Режим Возвращаемое значение
Random Номер записи, которая будет считана или записана следующей.
Binary Номер байта, с которого начинается выполнение следующей операции ввода/вывода.
Output, Первому байту файла соответствует номер 1, второму 2 и т.п.
Append,
Input
В данном примере функция Seek используется для определения текущего положения указателя внутри файла. Предположим, что файл TESTFILE содержит несколько записей определенного пользователем типа Record.
Type Record ’ Тип, определенный пользователем.
ID As Integer
Name As String * 20
End Type
Для файлов, открытых в режиме Random, Seek возвращает номер следующей записи.
Dim MyRecord As Record ’ Объявляет переменную.
Open «TESTFILE» For Random As #1 Len = Len(MyRecord)
Do While Not EOF(1) ’ Цикл до конца файла.
Get #1, , MyRecord ’ Читает следующую запись.
Debug.Print Seek(1) ’ Выводит номер записи в окно «Отладка».
Loop
Close #1 ′ Закрывает файл.
Для файлов, открытых в других режимах, Seek возвращает номер байта, с которого будет начато выполнение следующей операции. Предположим, что файл TESTFILE содержит несколько строк текста.
Dim MyChar
Open «TESTFILE» For Input As #1 ′ Открывает файл для чтения.
Do While Not EOF(1) ’ Цикл до конца файла.
MyChar = Input(1, #1) ’ Читает следующий символ данных.
Debug.Print Seek(1) ’ Выводит номер байта в окно «Отладка».
Loop
Close #1 ′ Закрывает файл.
Похожие записи
- No related posts found