发新话题
打印

Seek 语句示例

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   ' 关闭文件。

TOP

发新话题