定义记录类型
在打开一个文件进行随机访问之前,应定义一个类型,该类型对应于该文件包含或将包含的记录。例如,一个雇员记录文件可定义一个称为 Person 的用户定义的数据类型,如下所述:
Type Person
ID As Integer
MonthlySalary As Currency
LastReviewDate As Long
FirstName As String * 15
LastName As String * 15
Title As String * 15
ReviewComments As String * 150
End Type
在类型定义中声明字段变量
因为随机访问文件中的所有记录都必须有相同的长度,所以固定的长度对用户定义类型中的各字符串元素通常很有用,就象以上的 Person 类型说明中所示的一样,在此作为例子,FirstName 与 LastName 都具有 15 个字符的固定长度。
如果实际字符串包含的字符数比它写入的字符串元素的固定长度少,则 Visual Basic 会用空白(字符代码 32)来填充记录中后面的空间。还有,如果字符串比字段的尺寸长,则它就会被截断。如果使用 长度可变的字符串,则任何用 Put 存储的或用 Get 检索的记录总长度都不能超过在 Open 语句的 Len 分句中所指定的记录长度。
'记录变量。
Public Employee As Person
'跟踪当前记录。
Public Position As Long
'文件中最后那条记录的编号。
Public LastRecord As Long
打开随机访问的文件
要打开随机访问的文件,Open 语句使用以下语法:
Open pathname [For Random] As filenumber Len = reclength
因为 Random 是缺省的访问类型,所以 For Random 关键字是可选项。
表达式 Len = reclength 指定了每个记录的尺寸in bytes. Note that every string variable in Visual Basic stores a Unicode string and that you must specify the byte length of that Unicode string。如果 reclength 比写文件记录的实际长度短,则会产生一个错误。如果 reclength 比记录的实际长度长,则记录可写入,只是会浪费些磁盘空间。
可用以下代码打开文件:
Dim FileNum As Integer, RecLength As Long, Employee As Person
'计算每条记录的长度。
RecLength = LenB(Employee)
'取出下一个可用文件编号。
FileNum = FreeFile
'用 Open 语句打开新文件。
Open "MYFILE.FIL" For Random As FileNum Len = RecLength
Private Sub Command1_Click() '读文件
Dim mybyte() As Byte, temp, rate As Double
Open "c:\汇率.txt" For Binary As 1 ' suppose your data with "[RMB2GB]=0.4" is in file "c:\汇率.txt"
ReDim mybyte(LOF(1))
Get #1, , mybyte
Close 1
All = StrConv(mybyte, vbUnicode) ' to string
temp = Split(All, vbCrLf)
temp = Filter(temp, "[RMB2GB]")
rate = CDbl(Split(temp(0), "=")(1))
MsgBox rate
End Sub