关于VB中动态数组的二进制存储问题
Private Type c
intC As Integer
End Type
Private Type B
Ctype() As c
End Type
Private mtype As B
Private Sub Form_Load()
Dim lngFileNum As Long
ReDim mtype.Ctype(1 To 10)
mtype.Ctype(1).intC = 100 '设置查看数据
lngFileNum = FreeFile()
Open "C:\1.dat" For Binary Access Write As lngFileNum
Put lngFileNum, , mtype
Close lngFileNum
End Sub
用UltraEdit打开所写的文件内容如下:
01 00 0A 00 00 00 01 00 00 00 64 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
...
想请教的是:
第一行的 01 00 0A 00 00 00 01 00 00 00 中的 这些数据表示的是什么意思?
0A 00 00 00这4个字节存储的应该是重新定义的数组的大小10 即 ReDim mtype.Ctype(1 To 10)
其他的就猜不出了。求教下...
[解决办法]
01 00 0A 00 00 00 01 00 00 00 64 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
红:数组长度10, Ctype(1 To 10)
绿:100, mtype.Ctype(1).intC = 100
蓝:0, mtype.Ctype(2).intC ~ mtype.Ctype(10).intC
黄色的0100可能表示mtype类型。如果mtype是数组的话那么黄色部分貌似为0000。还有剩余的不知为什么意思。
楼主再试试Private mtype() As B,那估计就更麻烦了,很奇怪vb的这样写法,挨顺序一个个些不就行了吗。
[解决办法]
文件头一般记录文件的类型,尺寸,有些还记录创建时间,压缩幅度等等,不同格式的文件记录的信息不一样