回 帖 发 新 帖 刷新版面

主题:请教数据赋值的问题

我用通信控件响应一次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个回复)

沙发

第一列通常用 add 方法赋值,从第二列起,直接用等号(=)赋值,只是要注意,第二列的下标为1,第三列下标为2....
假设你这8个数据已经赋值给了数组 A,那么就可以这样:

ListView1.ListItems.Add , , A(0)
for j=1 TO 7
  ListView1.ListItems(i).SubItems(j) = A(j)
next

板凳

谢谢楼上的!其实,我想问的是Input如何将数据赋给多个变量?也就是Input如何将这8个单精度数赋给数组A的8个元素?

3 楼

我想问一下,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 楼

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

对于第一个问题: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)),这三者的区别!

我来回复

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