定长:
dim S as string * 255
s= "sdsdfsdb"
把S直接写入文件和读取,都没任何问题。因为S 是定长的。
len(s)=255
'长度固定为 255 ,不伦里面的值如何。
asc(mid(s,20,1)=0
'超过了给的值后,以 chr(0) 进行填充。
dim s() as byte
s="sdsdfsdb"
len(s)=8
'Byte数组,使用时与 字符串类型非常相似,差别很小
把s保存起来,只会占 8 个字节。
如
Put #1, , s
读取时:
redim s(0 to 7)
'先定义占用空间
然后再读,就只会读 8 个字节。
如
Get #1, , s
不定长,可以按下面的例子看
----------------------------
前面写的二个函数,不解释
Public Sub 保存(file As String)
'File :文件名
'文件结构:
'
BJ As String * 8
'ImgIndex
'
页数 As Integer
'
横排列 As Integer
'
纵排列 As Integer
'
纸号 As Integer
'
页数据() As 页数据结构
'
BJ As String * 4
'Page
'
filelen As Long
'
Filestr As String
'
prlen As Long
'
pr() As Byte
If Dir(file) <> "" Then
Kill file
End If
Dim i As Long
With FileData
Open file For Binary As #1
Put #1, , .BJ
Put #1, , .页数
Put #1, , .纸号
Put #1, , .横排列
Put #1, , .纵排列
For i = 1 To .页数
Put #1, , .页数据(i).BJ
Put #1, , .页数据(i).filelen
'先写入长度
Put #1, , .页数据(i).Filestr
'不定长字符串
Put #1, , .页数据(i).prlen
'先写入长度
Put #1, , .页数据(i).pr
'不定长BYTE数组
Next i
Close #1
End With
End Sub
Public Sub 打开(cs As String)
If Dir(cs) <> "" Then
Dim i As Long
With FileData
Open cs For Binary As #1
Get #1, , .BJ
Get #1, , .页数
Get #1, , .纸号
Get #1, , .横排列
Get #1, , .纵排列
ReDim .页数据(1 To .页数)
'读到总页数,重定义数组
For i = 1 To .页数
Get #1, , .页数据(i).BJ
Get #1, , .页数据(i).filelen
'读长度
.页数据(i).Filestr = Input(.页数据(i).filelen, #1)
'读指定多个字符个数
Get #1, , .页数据(i).prlen
'读长度
ReDim .页数据(i).pr(.页数据(i).prlen)
'重定义数组
Get #1, , .页数据(i).pr
'读 BYTE 数组
Next i
Close #1
End With
Else
MsgBox "文件不存在", vbCritical, "错误"
End If
End Sub
已精简代码,删除校验文件标记和页标记部分