主题:请教数据赋值的问题
greatmenddc
[专家分:0] 发布于 2008-09-05 15:48:00
我用通信控件响应一次OnComm事件,再用Input属性读入多字节数据(例如32字节).要将这32个字节分成8个单精度数分别赋予:
ListView1.ListItems(i).SubItems (1)
ListView1.ListItems(i).SubItems (2)
ListView1.ListItems(i).SubItems (3)
..................................
ListView1.ListItems(i).SubItems (8)
程序应当怎么写?希望能得到大家的帮助!谢谢!
回复列表 (共5个回复)
沙发
一江秋水 [专家分:9680] 发布于 2008-09-06 08:35:00
第一列通常用 add 方法赋值,从第二列起,直接用等号(=)赋值,只是要注意,第二列的下标为1,第三列下标为2....
假设你这8个数据已经赋值给了数组 A,那么就可以这样:
ListView1.ListItems.Add , , A(0)
for j=1 TO 7
ListView1.ListItems(i).SubItems(j) = A(j)
next
板凳
greatmenddc [专家分:0] 发布于 2008-09-06 09:19:00
谢谢楼上的!其实,我想问的是Input如何将数据赋给多个变量?也就是Input如何将这8个单精度数赋给数组A的8个元素?
3 楼
lcrxl1815 [专家分:110] 发布于 2008-09-06 20:42:00
我想问一下,32个字节分成8个单精度数是平分吗?如果是你可以试试这个程序:
buf=msc.input
redim ary=(len(buf)-1)
for i=1 to len(buf)
ary(i-1)=mid(buf,i,1)
next
for i=0 to len(buf)-1
if i< 4 then
a(0)=a(0)+ary(i)
else if 4=<i<8 then
a(1)=a(1)+ary(i)
else if 8=<i<12 then
a(2)=a(2)+ary(i)
else if 12=<i<16 then
a(3)=a(3)+ary(i)
else if 16=<i<20 then
a(4)=a(4)+ary(i)
else if 20=<i<24 then
a(5)=a(5)+ary(i)
else if 24=<i<28 then
a(6)=a(6)+ary(i)
else if 28=<i<=len(buf) then
a(7)=a(7)+ary(i)
end if
next
4 楼
greatmenddc [专家分:0] 发布于 2008-09-08 14:25:00
[color=0000FF][size=4]谢谢lcrxl1815的回复!我接触VB的时间不长,连菜鸟都不敢自称,有些问题过于简单请勿笑话.程序的大部分都看懂了,8个单精度数是平分的,每个数4个字节.还有一些不懂在这里再问一下:
1. buf 是应事先声明的32个字节的缓冲区吗?
2. 对 a(0)=a(0)+ary(i) 这样的句子我还没看懂.
我理解a(0)应是声明的8个单精度数组的第一个元素,有4个字节.a(0)=a(0)+ary(i)一句是否将ary(0)到ary(3)的和赋给了a(0)?我原本是默认ary(0)到ary(3)组成一个单精度数.这样岂不等于将单精度数的4个字节相加赋给a(0)了?[/size][/color]
5 楼
lcrxl1815 [专家分:110] 发布于 2008-09-09 02:49:00
对于第一个问题:buf 是一个声明变量,你可以随便起一个名字,是为了接受msc.input数据。
对于第二个问题:就看你怎样对ary(0)定义了,你可以去查点资料看看:ary(0)=ary(0)+ary(i),ary(0)=ary(0)&ary(i),ary(0)=val(ary(0))+val(ary(i)),这三者的区别!
我来回复