回 帖 发 新 帖 刷新版面

主题:关于OPEN的问题

请各位朋友指教:
    如何使用OPEN将"FF"直接写入指定的二进制文件中?

回复列表 (共12个回复)

沙发

想搞文件粉碎机?

板凳


非也!只是在编程时的中间数据的存储。
我的程序如下,请各位朋友指点:
   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 楼


非也!只是在编程时的中间数据的存储。
我的程序如下,请各位朋友指点:
   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 楼


我又试用了以下程序:

   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 楼

[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 楼


多谢啦!!!!
您的程序通过运行了!!!!
万分感激!!!!!!!

7 楼


joforn老师:

'以二进制数值填充‘的形式加入地址后,加入地址的前一个地址的字节数据被清零("00"),如何解决?

8 楼

好像把你的代码中的chr(i)改为chrB(i)也行。
我觉得原因是函数Chr()把ascii码转化为字符,字符是16为长度,所以在转换到128个字符的时候,就已经把255个字节占满了。

9 楼

[quote]
joforn老师:

'以二进制数值填充‘的形式加入地址后,加入地址的前一个地址的字节数据被清零("00"),如何解决?[/quote]

使用Seek

10 楼


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]

请指教!我将不胜感激!!!!!!!

我来回复

您尚未登录,请登录后再回复。点此登录或注册