Get 1, , data 是把文件从数组的第一个元素开始赋值,我想问如何从第8个元素开始赋值

lhaaaaaa 2004-07-15 09:25:19
可以用get 1, ,data(8)吗,好象不可以哦,应该如何用呢???
...全文
174 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
lhaaaaaa 2004-07-15
  • 打赏
  • 举报
回复
我的意思是数组的前7位都不动,从第8位开始赋值,就是说数组是二进制文件前面加了一个头,这个函数管用吗,一定要用循环一个一个的赋值吗
of123 2004-07-15
  • 打赏
  • 举报
回复
没看清楚,不好意思。
下面的试过:
Dim data() As Byte

Open "c:\windows\安装程序.bmp" For Binary As #1
ReDim data(1 To LOF(1) + 8) As Byte
Get #1, , data(8)
Close #1
northwolves 2004-07-15
  • 打赏
  • 举报
回复
这样用:

Private Sub Command1_Click()
Dim DATA() As Byte
Open "D:\123.TXT" For Binary As #1
ReDim DATA(LOF(1) - 8)
Get #1, 8, DATA 'get file from byte 8
Close #1
MsgBox StrConv(DATA, vbUnicode)'show the file from byte 8
End Sub

Private Sub Form_Load()
Open "D:\123.TXT" For Binary As #1
Put #1, , "1234567890ABCDEFG" ' file txt
Close #1
End Sub
of123 2004-07-15
  • 打赏
  • 举报
回复
get 1, 8, data
northwolves 2004-07-15
  • 打赏
  • 举报
回复
呵呵,可以用COPYMEMORY:

Private Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" _
(ByVal dest As Long, ByVal source As Long, ByVal bytes As Long)



Private Sub Command1_Click()
Dim DATA() As Byte, n As Long
Dim TEMP(1 To 7) As Byte
For n = 1 To 7
TEMP(n) = 96 'a
Next
Open "D:\123.TXT" For Binary As #1
n = LOF(1)
ReDim DATA(1 To n)

Get #1, , DATA() 'get file from byte 8
Close #1

ReDim Preserve DATA(1 To 8 + n)

CopyMemory ByVal VarPtr(DATA(8)), ByVal VarPtr(DATA(1)), n ' move the first n byte to pos 8
CopyMemory ByVal VarPtr(DATA(1)), ByVal VarPtr(TEMP(1)), 7 'the first 7 byte is aaaaaaa
MsgBox StrConv(DATA, vbUnicode) 'show the file from byte 8
End Sub

Private Sub Form_Load()
Open "D:\123.TXT" For Binary As #1
Put #1, , "1234567890ABCDEFG" ' file txt
Close #1
End Sub

7,763

社区成员

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

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