Шаг 60 - Инструкция Seek

Задает положение указателя для следующей операции чтения/записи внутри файла, открытого с помощью инструкции Open.

Seek [#]номерФайла, позиция

Параметры
номерФайла
Обязательный. Любой допустимый номер файла.
позиция
Обязательный. Число в диапазоне 1 – 2,147,483,647 указывающее позицию, начиная с которой будет выполнена следующая операция чтения или записи.

Замечания
При выполнении инструкций Get и Put, содержащих конкретные номера записей, позиция указателя, установленная с помощью инструкции Seek, игнорируется.
Выполнение операции записи в файл после установки указателя с помощью инструкции Seek за конец файла приводит к увеличению размера файла. Установка указателя с помощью инструкции Seek в отрицательное или нулевое положение приведет к возникновению ошибки.

Пример
В данном примере инструкция Seek используется для изменения положения указателя внутри файла для следующей операции ввода/вывода. Предположим, что файл TESTFILE содержит несколько записей определенного пользователем типа Record.

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

Предыдущий Шаг | Следующий Шаг | Оглавление
Автор Каев Артем.