重拾VB之三,二进制文件篇
重拾VB之三,二进制文件篇
PMP 关劲松
鬼使神差,09年12月入职的公司仍使用VB开发软件,虽然并非专职开发,但也不得不在事隔4年之后,重新使用VB。
读取、修改二进制文件仍是大部分编程语言的基本开发技能。可以提高处理文件效率,主要应用在通信、交换数据等方面。
'open filename$ for binary #filenumber'以二进制方式建立或者打开文件,然后再用
'Put #FileNumber, postion, inputdata '写入数据inputdata,
'Get #FileNumber, postion, outputdata '读出数据到outputvarible
#FileNumber, 打开的二进制文件流。
postion, 文件中的数据位置。
inputdata 输入数据缓冲。可以使用数组或字符串。
outputdata 输出数据缓冲。可以使用数组或字符串。
代码
Sub read()
Dim strFileName1, s As String
Dim aryContent(20) As Byte
strFileName1 = App.Path & "\test.hex"
Open strFileName1 For Binary As 1
Get #1, 120, aryContent() '从文件中120字节处取出长度20的数据到数组中。
msgbox(aryContent()) '以16进制的方式显示。
s = Space(20) '重定义字符串长度。
Get #1, 2514, s ' 从文件中120字节处取出长度20的数据到字符串中。
msgbox(s) '以字符的方式显示。
Close 1
End Sub
Sub write()
Dim strFileName1, s As String
Dim aryContent(20) As Byte
strFileName1 = App.Path & "\test.hex"
Open strFileName1 For Binary As 1
s = Space(20)
s = "teststtsestssts33333"
Put #1, 2486, s '在文件中2486字节处写入长度20的字符串数据。
Debug.Print s
aryContent(0) = &H4F '初始化数组
aryContent(1) = &H33
aryContent(2) = &HA1
aryContent(3) = &H42
aryContent(4) = &H8D
Put #1, 2514, aryContent() ''在文件中2514字节处写入长度20的十六进制数组数据。
Debug.Print aryContent()
Close 1
End Sub
相关文档:
传统方法是遍历一遍
如果listbox 项目过多
明显速度不行
好方法是通过sendmessge发消息给listbox让他把选中项目直接传到参数数组中
You can use the SendMessage() API function instead.
As
you probably know, this function lets you send a message to one or more
windows. The declaration statement conforms ......
最简单的方法是使用filesystemobject对象。而它并非VB内置对象,
需引用才可以使用。
1.filesystemObject对象引用
“工程/引用/microsoft scription Runtime”
在对象浏览器窗口中选“scripting”模块,看到增了许多对象,
drive filesystemobject textstream &nbs ......
Option Explicit
Function Delete3(Arr As Variant) As Variant
Dim i As Integer
For i = LBound(Arr) To UBound(Arr)
If i > UBound(Arr) Then Exit For
If Arr(i) = 3 Then
Do
Dim j As Integer
For j = i To UBound(Arr) - 1
......
Welcome to Microsoft Developer Support, Languages team blog! You will find a lot of language related troubleshooting resources here.
Troubleshooting PInvoke Related Issues
I am back with some more PInvoke Stuff. Recently I was working on a PInvoke issue which I found interesting ......
没壳,没有Command Button,所有的内容都在Form_Load里。用VBDE查看,Form_Load在00406A90,打开W32dsm,载入Casino轮盘智能机器人,查找00406A90,反汇编代码如下:
Quote:
:00406A90 55 &nb ......