从文件读取数据到缓冲区
语法
Get #filenum  As Integer, [position  As LongInt], ByRef data  As Any [, [amount  As Integer] [, ByRef bytesread  As UInteger] ]
Get #filenum  As Integer, [position  As LongInt], data  As String [, , ByRef bytesread  As UInteger ]
Get #filenum  As Integer, [position  As LongInt], data()  As Any [, , ByRef bytesread  As UInteger ]
用法
Get #filenum , position , data  [, [amount ] [, bytesread  ] ]
varres = Get (#filenum , position , data  [, [amount ] [, bytesread  ] ] )
参数
filenum 
position 
阅读必须开始的位置。如果文件已打开
For Random,则该位置在记录中;否则,它是以字节为单位。如果省略,则从当前文件指针位置开始读取。位置是1:即文件的第一个记录或字节位于
1.
如果省略
position 或零(
0),文件读取将从当前文件位置开始。
写入数据的缓冲区它可以是数字变量,字符串,数组,用户定义的类型或取消引用的指针。读取操作将尝试完全填充变量,除非达到
EOF.
获取数组时,
data 后面应该有一个空的方括号:“
()”。
Get将读取数组中所有值的数据。
amount 不允许。
获取
String时,读取的字节数与字符串数据中的字节数相同。
amount 不允许。
注意:如果要将值读入缓冲区,则不应将指针传递给缓冲区;而是应该在缓冲区中传递第一个变量。(这可以通过使用
操作符 * (Value Of)取消引用指针来实现。)如果直接传递指针,则
Get将覆盖指针变量,而不是其指向的内存。
使
Get从文件到内存中读取
amount 个连续变量,即它从
data 的内存位置开始,将
(amount  * SizeOf(data ) )个数据从文件读取到内存中。如果省略
amount ,则默认为
1,这意味着
Get只读取单个变量。
一个无符号整数变量,用于接受从文件中成功读取的字节数的结果。
 返回值
零(
0)成功;非零错误。注意:如果
EOF(文件结尾)在阅读时到达,则
Get将返回成功。通过传递
bytesread 变量可以检查实际读取的字节数。
说明
从文件读取二进制数据到缓冲区变量
Get可以作为一个功能使用,并且将成功返回
0或失败时的错误代码。
对于以
Random模式打开的文件,要读取的数据的大小(以字节为单位)必须与指定的记录大小相匹配。
例子
Dim Shared f As Integer
Sub get_integer()
    Dim buffer As Integer '整数变量
    '从文件读取一个整数(4字节)到缓冲区中,使用文件号“f”。
    Get #f, , buffer
    '打印出结果
    Print buffer
    Print
End Sub
Sub get_array()
    Dim an_array(0 To 10-1) As Integer '整数数组
    '从文件读取10个整数(10 * 4 = 40字节)到an_array,使用文件编号“f”。
    Get #f, , an_array()
    '打印出结果
    For i As Integer = 0 To 10-1
        Print an_array(i)
    Next
    Print
End Sub
Sub get_mem
    Dim pmem As Integer Ptr
    '为5个整数赋值内存
    pmem = Allocate(5 * SizeOf(Integer))
    '从文件读取5个整数(5 * 4 = 20个字节)到赋值的内存中
    Get #f, , *pmem, 5 '注意pmem必须被取消引用(* pmem或pmem [0]??)
    '使用[]指针索引打印输出结果
    For i As Integer = 0 To 5-1
        Print pmem[i]
    Next
    Print
    '免费的指针内存来防止内存泄漏
    Deallocate pmem
End Sub
'找到第一个免费的文件文件编号。
f = FreeFile
'打开文件“file.ext”进行二进制使用,使用文件号“f”。
Open "file.ext" For Binary As #f
  get_integer()
  get_array()
  get_mem()
'关闭文件。
Close #f
'将一个小文本文件加载到一个字符串
Function LoadFile(ByRef filename As String) As String
    
    Dim h As Integer
    Dim txt As String
    
    h = FreeFile
    
    If Open( filename For Binary Access Read As #h ) <> 0 Then Return ""
    
    If LOF(h) > 0 Then
        
        txt = String(LOF(h), 0)
        If Get( #h, ,txt ) <> 0 Then txt = ""
        
    End If
    
    Close #h
    
    Return txt
    
End Function
Dim ExampleStr As String
ExampleStr = LoadFile("smallfile.txt")
Print ExampleStr
 与QB差别
- FB中的得到可以像VB一样读取完整的数组,或者将数据大小的倍数读入存储器。
 
- 得到可以用作FB中的函数,以查找返回的成功/错误代码,而无需使用错误处理过程。
 
- FB允许bytesread 参数,以检查已成功读入多少字节。
 
 
 参考