主题:关于OPEN的问题
tslgz
[专家分:0] 发布于 2008-03-09 01:33:00
请各位朋友指教:
如何使用OPEN将"FF"直接写入指定的二进制文件中?
回复列表 (共12个回复)
沙发
我是大喊三 [专家分:3010] 发布于 2008-03-09 02:42:00
想搞文件粉碎机?
板凳
tslgz [专家分:0] 发布于 2008-03-09 07:51:00
非也!只是在编程时的中间数据的存储。
我的程序如下,请各位朋友指点:
Open App.Path & "\My_txt" For Binary As #2
For i = 0 To 255
Seek #2, i + 1 ' 设置读写位置
Print #2, i
Next
Close #2
本意是:将0至255的数,存储到二进制文件My_txt中,存储为00、01、02至FE、FF的形式。
感谢各位朋友指教!
3 楼
tslgz [专家分:0] 发布于 2008-03-09 08:37:00
非也!只是在编程时的中间数据的存储。
我的程序如下,请各位朋友指点:
Open App.Path & "\My_txt" For Binary As #2
For i = 0 To 255
Seek #2, i + 1 ' 设置读写位置
Print #2, i
Next
Close #2
本意是:将0至255的数,存储到二进制文件My_txt中,存储为00、01、02至FE、FF的形式。如下图所示:
[img]D:\02.bmp[/img]
而非下图所示:
[img]d:\01.bmp[/img]
感谢各位朋友指教!
4 楼
tslgz [专家分:0] 发布于 2008-03-09 09:05:00
我又试用了以下程序:
Open App.Path & "\My_fot" For Append As #2
For i = 0 To 255
Seek #2, i + 1 ' 设置读写位置
Print #2, Chr(i)
Next
Close #2
能完成128以前的数据,且达到了一半的目的。如下图所示:
[img]d:\03.bmp[/img]
但是128以后的数据未能如愿。请各位朋友指教!!!
5 楼
joforn [专家分:1460] 发布于 2008-03-09 09:19:00
[quote]
非也!只是在编程时的中间数据的存储。
我的程序如下,请各位朋友指点:
Open App.Path & "\My_txt" For Binary As #2
For i = 0 To 255
Seek #2, i + 1 ' 设置读写位置
Print #2, i
Next
Close #2
本意是:将0至255的数,存储到二进制文件My_txt中,存储为00、01、02至FE、FF的形式。
感谢各位朋友指教![/quote]
Option Explicit
Private Sub Command1_Click()
'以十六进制字符串填充
Dim I As Long, DataB() As Byte
Open App.Path & "\My_txt.TXT" For Binary As #2
For I = 0 To 255
DataB() = IIf(I < 16, "0" & Hex(I), Hex(I))
Put #2, , DataB
Next
Close #2
End Sub
Private Sub Command2_Click()
'以二进制数值填充
Dim DataB(0 To 255) As Byte, I As Long
Open App.Path & "\My_txt.TXT" For Binary As #2
For I = 0 To 255
DataB(I) = I
Next
Put #2, , DataB()
Close #2
End Sub
6 楼
tslgz [专家分:0] 发布于 2008-03-09 10:31:00
多谢啦!!!!
您的程序通过运行了!!!!
万分感激!!!!!!!
7 楼
tslgz [专家分:0] 发布于 2008-03-09 11:48:00
joforn老师:
'以二进制数值填充‘的形式加入地址后,加入地址的前一个地址的字节数据被清零("00"),如何解决?
8 楼
singlion [专家分:690] 发布于 2008-03-09 17:24:00
好像把你的代码中的chr(i)改为chrB(i)也行。
我觉得原因是函数Chr()把ascii码转化为字符,字符是16为长度,所以在转换到128个字符的时候,就已经把255个字节占满了。
9 楼
joforn [专家分:1460] 发布于 2008-03-09 18:41:00
[quote]
joforn老师:
'以二进制数值填充‘的形式加入地址后,加入地址的前一个地址的字节数据被清零("00"),如何解决?[/quote]
使用Seek
10 楼
tslgz [专家分:0] 发布于 2008-03-09 19:46:00
joforn老师:
我使用了SEEK,程序如下:
Private Sub Command1_Click()
Dim DataB(0 To 16) As Byte, i As Long, s$, S1$, J%
s = "0123456789ABCDEF"
Open App.Path & "\My_txt" For Binary As #2
For J = 1 To 10
Seek #2, J * 16
For i = 1 To 16
S1 = Hex2Dec(Mid(s, i, 1))
DataB(i) = S1
Next
Put #2, , DataB()
Next J
Close #2
End Sub
但结果还是其字串的最后一个字节被置零,只有最后写入的为正确值。如下图所示:
[img]d:\04.bmp[/img]
请指教!我将不胜感激!!!!!!!
我来回复