基础问题难倒我 Type rec
x as long
y as long
End rec
Dim sRec as rec
/-------------------
Open "dName" for Binary as #1
For i=1 To dEnd
Get #1,,sRec'
...
next
运行完全没问题.但换成
For i=1 To dEnd
Get #1,i,sRec
Next
除了第一条记录读去正确 其他的记录全都乱七八糟Get #1,,sRec与Get #1,i,sRec 有什么区别吗??
x as long
y as long
End rec
Dim sRec as rec
/-------------------
Open "dName" for Binary as #1
For i=1 To dEnd
Get #1,,sRec'
...
next
运行完全没问题.但换成
For i=1 To dEnd
Get #1,i,sRec
Next
除了第一条记录读去正确 其他的记录全都乱七八糟Get #1,,sRec与Get #1,i,sRec 有什么区别吗??
将一个已打开的磁盘文件读入一个变量之中。
语法
Get [#]filenumber, [recnumber], varname
Get 语句的语法具有以下几个部分:
部分 描述
filenumber 必要。任何有效的文件号。
recnumber 可选。Variant (Long)。记录号(Random 方式的文件)或字节数(Binary 方式的文件),以表示在此处开始读出数据。
varname 必要。一个有效的变量名,将读出的数据放入其中。
说明
通常用 Put 将 Get 读出的数据写入一个文件。
文件中第一个记录或字节位于位置 1,第二个记录或字节位于位置 2,依此类推。若省略 recnumber,则会读出紧随上一个 Get 或 Put 语句之后的下一个记录或字节(或读出最后一个 Seek 函数指出的记录或字节)。所有用于分界的逗号都必须罗列出来,例如:
Get #4,,FileBuffer
但
For i=1 To dEnd
Get #1,i,sRec ' 但此句中的i执行的是自文件第i字节起(8字节,2个Long字节长),所以获得的是错误数据.
Next
For i=1 To dEnd STEP 8
Get #1,i,sRec
Next
可获得正确数据.
'----------------------------------------
Get 语句示例
本示例使用 Get 语句来将数据从文件读到变量中。示例中假设 TESTFILE 文件中含有五个用户自定义类型的记录。Type Record ' 定义用户自定义的数据类型。
ID As Integer
Name As String * 20
End TypeDim MyRecord As Record, Position ' 声明变量。
' 为随机访问打开样本文件。
Open "TESTFILE" For Random As #1 Len = Len(MyRecord)
' 使用 Get 语句来读样本文件。
Position = 3 ' 定义记录号。
Get #1, Position, MyRecord ' 读第三个记录。
Close #1 ' 关闭文件。'---------------------------
以上是MSDN中的解释
就是这段把我害了!那么请问假如我要读一个很大的文件 想分成几页来显示
我该如何做呢?既在读第2,4,5...页时我怎么定义起始记录位置呢?
记录长度=40
spageSize=30
我怎么能分次读取 1 2 3..页?
我的代码:
'sPage当前要显示的页Open fName For Binary As #1
Seek(1), (sPage - 1) * sPageSize + 1
For i = (sPage - 1) * sPageSize + 1 To (sPage - 1) * sPageSize + sPageSize
Get #1,, fRec
grdMain.additem fRec.x1 &vbtab &fRec.x2.....
nextsPage=1时正确
sPage=2,3,4..时 错误
用For random as # len=40