VB怎样读写有文件头信息的二进制文件

sjvfhp 2012-05-12 09:06:36
'1、我用自定义的变量只能读写没有文件头的二进制文件?
'2、用Random模式打开读取记录总是从第一个字节开始读文件不能指定从某个位置开始读取?
'3、写入的二进制文件的字段间隔标识是二个字节的,怎样才能使用一个字节的间隔标识?

Public Type WJTXX
版本 As String * 18
密码 As String * 18
标识 As Boolean
定长 As Integer
End Type

Public Type ZDYZFC
bm As String
mc As String
dw As String
jg As Double
xs As Double
bz As String
End Type

Dim WJNL As WJTXX
Dim SJCL As ZDYZFC

Private Sub Command1_Click()
WJNL.版本="V1.0"
WJNL.密码="123456"
WJNL.标识= True
WJNL.定长= 200

Open App.Path & "\.bat" For Random As #1 Len = 300 ' Random模式打开
Put #1, , WJNL
Seek #1, 201
For i = 1 To MSFlexGrid1.Rows - 1
SJCL.bm = MSFlexGrid1.TextMatrix(i, 1)
SJCL.mc = MSFlexGrid1.TextMatrix(i, 2)
SJCL.dw = MSFlexGrid1.TextMatrix(i, 3)
SJCL.jg = Val(MSFlexGrid1.TextMatrix(i, 4))
SJCL.xs = Val(MSFlexGrid1.TextMatrix(i, 5))
SJCL.bz = Mid(MSFlexGrid1.TextMatrix(i, 6))
Put #1, i, SJCL
Next
Close #1

End Sub

Private Sub Command2_Click()
Open App.Path & "\.bat" For Random As #1 Len = 300 ' Random模式打开
Get #1, , WJNL
Text1= WJNL.版本
Text2= WJNL.密码
Text3= WJNL.标识
Text4= WJNL.定长
i = 1
Do While Not EOF(1)
Seek #1, 201
Get #1, i, SJCL
MSFlexGrid1.Rows = MSFlexGrid1.Rows + 1
MSFlexGrid1.TextMatrix(i, 0) = i
MSFlexGrid1.TextMatrix(i, 1) = Trim(SJCL.bm)
MSFlexGrid1.TextMatrix(i, 2) = Trim(SJCL.mc)
MSFlexGrid1.TextMatrix(i, 3) = Trim(SJCL.dw)
MSFlexGrid1.TextMatrix(i, 4) = IIf(SJCL.jg <> 0, SJCL.jg, "")
MSFlexGrid1.TextMatrix(i, 5) = IIf(SJCL.xs <> 0, SJCL.xs, "")
MSFlexGrid1.TextMatrix(i, 6) = Trim(SJCL.bz)
i = i + 1
Loop
Close #1
End Sub
...全文
312 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
sjvfhp 2012-05-12
  • 打赏
  • 举报
回复
我要怎样修改代码才能正确读写带有文件头信息的文件?请高手修改我的代码指明方法。
worldy 2012-05-12
  • 打赏
  • 举报
回复
使用seek方法定位
使用Loc获取当前文件位置
嗷嗷叫的老马 2012-05-12
  • 打赏
  • 举报
回复
比如文件头有12个字节,则:

dim FileHeader(11) as byte

open "XXX.bin" for binary as #1
get #1,,fileheader()
close #1

这fileheader()里的12个字节就是了.
sjvfhp 2012-05-12
  • 打赏
  • 举报
回复
VB新手还请各位大侠说详细些。不知怎么样来定缓冲区。
嗷嗷叫的老马 2012-05-12
  • 打赏
  • 举报
回复
文件头有多大,就定义多大的缓冲区,再以二进制方式读取.

知道大小的话还有啥问题啊.

7,764

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧