首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VB >

VB编程中下标越界解决方法

2013-03-26 
VB编程中下标越界我的代码是这样子的:Dim ab(9) As ByteDim av As VariantPrivate Sub MSComm1_OnComm()Wi

VB编程中下标越界
我的代码是这样子的:
Dim ab(9) As Byte
Dim av As Variant

Private Sub MSComm1_OnComm()
  With MSComm1
    Select Case .CommEvent
      Case comEvReceive
         av = .Input
         ab(0) = av(0)
         If ab(0) = &H2 Then
            .RThreshold = 0
            
            av = .Input
            ab(1) = av(0)
            av = .Input
            ab(2) = av(0)
            av = .Input
            ab(3) = av(0)
            av = .Input
            ab(4) = av(0)
            av = .Input
            ab(5) = av(0)
            av = .Input
            ab(6) = av(0)
            av = .Input
            ab(7) = av(0)
            av = .Input
            ab(8) = av(0)   //到这里就出现av(0)下标越界的问题。

   我逐步调试的时候不会出现这个问题,我运行的时候就出现这个问题了。请各位高手指教。我的代码是这样子的:
Dim ab(9) As Byte
Dim av As Variant

Private Sub MSComm1_OnComm()
  With MSComm1
    Select Case .CommEvent
      Case comEvReceive
         av = .Input
         ab(0) = av(0)
         If ab(0) = &H2 Then
            .RThreshold = 0
            
            av = .Input
            ab(1) = av(0)
            av = .Input
            ab(2) = av(0)
            av = .Input
            ab(3) = av(0)
            av = .Input
            ab(4) = av(0)
            av = .Input


            ab(5) = av(0)
            av = .Input
            ab(6) = av(0)
            av = .Input
            ab(7) = av(0)
            av = .Input
            ab(8) = av(0)   //到这里就出现av(0)下标越界的问题。

   我逐步调试的时候不会出现这个问题,我运行的时候就出现这个问题了。请各位高手指教。
我发送的数据是用串口调试助手按十六进制发送的,内容是:02 51 2C 30 30 31 2E 32 2C 30 30 39 2E 36 32 32 2C 2B 30 30 30 2E 32 38 38 2C 4D 2C 30 30 2C 03 31 37 0D 0A
[解决办法]

引用:
初始为1.当接收到第一个数据后,就设为0了。

初始为1,一般主板的RS232硬件在一次OnComm事件中能收到8字节的数据,而LZ
Dim ab(9) As Byte
是定义了10个的字节数组,所以在
ab(8) = av(0) 时出现av(0)下标越界的问题。
[解决办法]
http://download.csdn.net/source/1262066

热点排行