Seek 语句示例
Seek 语句
在 Open 语句打开的文件中,设置下一个读/写操作的位置。
语法
Seek [#]filenumber, position
Seek 函数
返回一个 Long,在 Open 语句打开的文件中指定当前的读/写位置。
语法
Seek(filenumber)
必要的 filenumber 参数是一个包含有效文件号的 Integer。
说明
Seek 函数返回介于 1 和 2,147,483,647(相当于 2^31 – 1)之间的值。
对各种文件访问方式的返回值如下:
方式 返回值
Random 下一个读出或写入的记录号。
Binary,
Output,
Append,
Input 下一个操作将要发生时所在的字节位置。文件中的第一个字节位于位置 1,第二个字节位于位置 2,依此类推。
Seek 语句的语法具有以下几个部分:
部分 描述
filenumber 必要。任何有效的文件号。
position 必要。介于 1 – 2,147,483,647 之间的数字,指出下一个读写操作将要发生的位置。
说明
在 Get 及 Put 语句中指定的记录号将覆盖由 Seek 语句指定的文件位置。
若在文件结尾之后进行 Seek 操作,则进行文件写入的操作会把文件扩大。如果试图对一个位置为负数或零的文件进行 Seek 操作,则会导致错误发生。
Seek 语句示例
本示例使用 Seek 语句在文件内设置下一次读写的位置。示例中假设 TESTFILE 文件内含有用户自定义数据类型 Record 的记录。
Type Record ' 定义用户自定义数据类型。
ID As Integer
Name As String * 20
End Type
如果以随机方式打开文件,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 ' 关闭文件。
如果不以 Random 打开文件,则 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 ' 关闭文件。