Skip to content

Seek

返回或设置使用Open语句打开的文件中的读/写位置。

Seek函数

返回一个Long,指定打开文件中当前的读/写位置。

语法:Seek( filenumber )

filenumber
必需 Integer,包含有效的文件号。

Seek返回1到2,147,483,647(2^31 − 1)之间的值(包含边界值)。

模式返回值
Random下一条要读取或写入的记录的编号。
BinaryOutputAppendInput下一次操作发生时的字节位置。文件中的第一个字节位于位置1。

Seek语句

设置打开文件中下一次读/写操作的位置。

语法:Seek [ # ] filenumber, position

filenumber
必需 任何有效的文件号。
position
必需 1--2,147,483,647范围内的数字,指示下一次读/写操作应发生的位置。

GetPut语句中指定的记录号会覆盖由Seek执行的文件定位。

Seek操作超过文件末尾后执行文件写入操作将扩展文件。尝试Seek到负数或零位置会产生错误。

示例

本示例假设TESTFILE包含用户自定义类型Record的记录。

vb
Type Record    ' Define user-defined type.
    ID As Integer
    Name As String * 20
End Type

对于以Random模式打开的文件,Seek函数返回下一条记录的编号。

vb
Dim MyRecord As Record
Open "TESTFILE" For Random As #1 Len = Len(MyRecord)
Do While Not EOF(1)    ' Loop until end of file.
    Get #1, , MyRecord    ' Read next record.
    Debug.Print Seek(1)    ' Print record number.
Loop
Close #1    ' Close file.

Seek语句可以设置记录位置。本示例以逆序读取记录。

vb
Dim MyRecord As Record, MaxSize, RecordNumber
Open "TESTFILE" For Random As #1 Len = Len(MyRecord)
MaxSize = LOF(1) \ Len(MyRecord)    ' Get number of records in file.
For RecordNumber = MaxSize To 1 Step -1
    Seek #1, RecordNumber    ' Set position.
    Get #1, , MyRecord    ' Read record.
Next RecordNumber
Close #1    ' Close file.

对于以Random以外模式打开的文件,Seek返回或设置字节位置。

vb
Dim MyChar
Open "TESTFILE" For Input As #1    ' Open file for reading.
Do While Not EOF(1)    ' Loop until end of file.
    MyChar = Input(1, #1)    ' Read next character.
    Debug.Print Seek(1)    ' Print byte position.
Loop
Close #1    ' Close file.

另请参阅

twinBASIC及其LOGO版权为作者"韦恩"所有