仁义礼智我固有之教案:急急急!VB:我把一个文本分成了五包,每包六百字节,最后一包不满怎么办?

来源:百度文库 编辑:神马品牌网 时间:2024/04/27 22:00:22
这就是第五包:
Dim aa5(2400 To 2999) As Byte’六百字节
Dim fbyte() As Byte
ReDim fbyte(1 To 15)
Dim i As Integer

fbyte(1) = 72: fbyte(2) = 83: fbyte(3) = 84: fbyte(4) = 108: fbyte(5) = 1: fbyte(6) = 5: fbyte(7) = 5: fbyte(8) = 5: fbyte(9) = 5: fbyte(10) = 5: fbyte(11) = 5: fbyte(13) = aa5: fbyte(14) = 2: fbyte(15) = 0 ‘同步字+命令字+目的地址+数据长度+数据内容+校验
Text1.Text = fbyte

Dim code As Long’校验
Dim pcode As Byte
code = 0
For i = 1 To 15
code = code + fbyte(i)
Next i
pcode = code Mod 256
pcode = Not pcode
pcode = pcode + 1
fbyte(15) = pcode
Com.Output = fbyte

Open "d:\ab.txt" For Binary As #5 '第五包数据
Get #5, , aa5
Close #5
For i =2400 To 2999
Text1.Text = Text1.Text & Hex(aa5(i))
Next i
最后一包文件如果不够六百字节,比如就10各字节,读完前十个它后面就显示0000000000000.......到第六百结束。
我想让它有多少就读多少,不够也不显示00000000?
听说用Eof可以,但我不会用
请高手指教,谢谢了!!!!!
就是有少就读多少,读完了后面没有了,也不显示0000000

dim data as byte
do while not eof(#文件号)
get #1,,data
loop
data读入的就是8位数值

实际上你缺少一个数据结束的标志,这个标志太短自然不行,太长也浪费,一般设置成32位或者16位?呵呵,自己实验吧。
如果数据用于传输,我想这个判断标志应该是要有的,否则后患无穷!
因为你的大小限制就是600字节,所以有可能出现结束标志位置不够的情况。解决的办法就是,为结束标志多留出一些空间。
在数据显示的时候,我们要判断一下是否遇到结束标志,也就是相当于文件的Eof,遇到之后后面的数据就不要了。

在每一个包的开始设置一个包长部分,如果包大小为600个字节,你用开始的两个字节表示包中内容的实际长度就可以了,包格式类似于:

内容长度(两个字节)+内容(最大不超过600字节)

这样包的总长度最大为602字节。