| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 714 人关注过本帖
标题:[原创]下标越界?
只看楼主 加入收藏
lcrxl1815
Rank: 1
等 级:新手上路
帖 子:14
专家分:0
注 册:2008-9-9
收藏
 问题点数:0 回复次数:2 
[原创]下标越界?
Private Sub MSC_OnComm()
Select Case
       Case comEvReceive
        Do
         buf = MSC.Input
         T = T + 1
         If T > 10000 Then Exit Do
       Loop Until (Left(buf, 1) = "=" And Len(buf) = 9)                                    
                                ‘保证buf是一个以  “=“开始的 9位数据,用do…loop进行循环等待。

ReDim ary(Len(buf))                              
        For i = 1 To Len(buf)
        ary(i - 1) = Mid(buf, i, 1)
        Next                                       ‘将buf重新定义为数组型
     If ary(Len(buf) - 1) = "-" Then              ‘判断buf的最高位是否为“-“
        For i = 0 To Len(buf) - 1
        buf1 = buf1 + ary(i)
        Next
        txtReceive1.Text = buf1              ‘如果为“-”,将赋值给txtReceive1.Text
        buf1 = ""
     Else
        For i = 0 To Len(buf) - 1
        buf1 = buf1 + ary(i)
        Next
        txtReceive2.Text = buf1                   ‘否则将赋值给txtReceive2.Text
        buf1 = ""
    End If
     Case comEvSend
End Select
End Sub

为什么在运行时,有的时候正常,有的时候在If ary(Len(buf) - 1) = "-" Then  这一句会出现错误提示:下标越界,

真的不知哪儿错了,想请高手帮帮忙!
搜索更多相关主题的帖子: 越界 
2008-09-17 20:12
不说也罢
Rank: 13Rank: 13Rank: 13Rank: 13
等 级:贵宾
威 望:39
帖 子:1481
专家分:4989
注 册:2007-10-7
收藏
得分:0 
你这个 ary(?) 的数组是怎么定义的啊?
出错原因就在于Len(buf) - 1的值要不大于数组的上标,要不就是小于数组的下标!

比如,定义 ary(3),则该数组的下标为0,上标为3(事先声明下标为1时,则下标为1)

[[it] 本帖最后由 不说也罢 于 2008-9-17 20:40 编辑 [/it]]

===================================================
讨厌C#的行尾的小尾巴;和一对大括号{ }
===================================================
2008-09-17 20:38
multiple1902
Rank: 8Rank: 8
等 级:贵宾
威 望:42
帖 子:4881
专家分:671
注 册:2007-2-9
收藏
得分:0 
不定义就用变量是不太好的习惯

还有,不是原创的技术类文章别加注“原创”。
2008-09-17 22:47
快速回复:[原创]下标越界?
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.049365 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved