主题:请教数据赋值的问题
			 greatmenddc
				 [专家分:0]  发布于 2008-09-05 15:48:00
 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
一江秋水 [专家分: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
greatmenddc [专家分:0]  发布于 2008-09-06 09:19:00				
				谢谢楼上的!其实,我想问的是Input如何将数据赋给多个变量?也就是Input如何将这8个单精度数赋给数组A的8个元素?
							 
						
				3 楼
				
					 lcrxl1815 [专家分:110]  发布于 2008-09-06 20:42:00
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
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
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)),这三者的区别!
							 
									
			
我来回复