Seek
返回或设置使用Open语句打开的文件中的读/写位置。
Seek函数
返回一个Long,指定打开文件中当前的读/写位置。
语法:Seek( filenumber )
- filenumber
- 必需 Integer,包含有效的文件号。
Seek返回1到2,147,483,647(2^31 − 1)之间的值(包含边界值)。
| 模式 | 返回值 |
|---|---|
| Random | 下一条要读取或写入的记录的编号。 |
| Binary、Output、Append、Input | 下一次操作发生时的字节位置。文件中的第一个字节位于位置1。 |
Seek语句
设置打开文件中下一次读/写操作的位置。
语法:Seek [ # ] filenumber, position
- filenumber
- 必需 任何有效的文件号。
- position
- 必需 1--2,147,483,647范围内的数字,指示下一次读/写操作应发生的位置。
Get和Put语句中指定的记录号会覆盖由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.