易语言 数组成员引用下标超出定义范围

.版本 2

.子程序 鼠标
.参数 名字, 文本型
.局部变量 返回文本, 文本型
.局部变量 返回数组, 文本型, , "0"

识字_坐标返回 (, , , , 名字, “ffffff-000000”, )
.如果真 (返回文本 ≠ “-1|-1|-1”)
返回数组 = 分割文本 (返回文本, “|”, )
延时 (100)
鼠标_移动 (到数值 (返回数组 [2]), 到数值 (返回数组 [3]))
输出调试文本 (“返回数组”)
按照教程的代码写,找不到那里出错了。

这是因为所取值的范围超出了数据库里的数据,就是没有依靠数据库中的数据取值,这样肯定会出现这种提示,比如数据库里只有两个数据1和2,但是所编程的程序里取值3,这样就会导致数据库识别不出,然后呈程序中断

一般的易语言程序员会在用正则表达式、分割文本,从网络中获取文本进行分割时出现数组成员引用下标超出定义范围

扩展资料

可以采用如下建议防止数组成员引用下标超出定义范围导致程序意外退出

方法很简单,就是在取数组成员的时候先判断一下数组成员数是否正常。你需要用到的命令是,取数组成员数(),易语言中有该函数的详细说明!

举个例子:

我们想采集某个网站的内容,这个网站内容包含的有标题、作者、发布时间、内容。我们用正则表达式采集的时候发现程序提示数组成员引用下标超出定义范围

那么我们就看看是再哪个页面出现问题的,找到之后发现这篇文章居然没有作者,应该是网站管理员疏忽忘记添加了。这时我们用正则表示取出的数组成员数只有3个,我们再取第4个的时候就会出错。

解决方法是在我们要取正则表达式获取的内容之前先判断一下取数组成员数是否等于4,如果等于4我们就直接取内容,如果不等于4那么我们只取3个内容,自己把作者补起来,或者直接跳过该页面去取正常格式的网站内容。

参考资料来源:百度经验-易语言 数组成员引用下标超出定义范围

温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2018-02-12

1、这里说的是要取的数组元素,在数组中不存在。

2、比如定义了一个5元素的数组,用得时候去取第6个元素,就会造成上述错误。

3、另外,e语言数组下标是从1开始的,如果取第0个元素,也是错的。

4、图示:

5、修改方法:取定义范围内的元素或扩大数组范围。

本回答被网友采纳
第2个回答  2013-11-25

错误原因:你的”大体图片内容“这个字节集估计是空的(没有获取到),或者中间没有中文冒号这个字节集,这样的话分割之后肯定就不成为数组了对吧,也就是数组成员数为0,而你下一行代码直接使用了 分割内容[1],引用了一个不存在的数组元素,肯定会错误。


改进方法:

    在使用分割内容[1]之前,先检查数组的成员数,用命令“取数组成员数()”即可,然后判断它的值是不是>0,然后再引用数组元素。(以后编程使用数组前都要检查,这样不容易出BUG。)

    如果你的大体图片内容肯定是含有中文冒号这个字节集的...那就是你之前的取回数据那里出了故障,取回的数据是空的..检查检查。但是也要看看方法1中,最好写一个异常处理,否则一旦崩溃程序就挂了。


全手打。望采纳!

第3个回答  推荐于2017-12-15
按照你说的,如果是提示数组成员引用下标超出定义范围的话,应该是返回数组的问题,一旦返回数组的成员不到3个,那么你写的返回数组 [3]就会提示那样的错误,你检查下返回数组的成员数吧。追问

我是按教程里的代码写的 教程无错误运行 但是我照抄为什么会错误呢。再过3个返回数组应该没错啊 难道有0这个返回数组么,应该是从1开始的吧。

追答

你要看实际情况,你用下面的命令输出看看:
输出调试文本 (“数组成员数:” + 到文本 (取数组成员数 (返回数组)))

追问

输出调试文本,神马都没有 加我吧我把源码给你试试。留下个神马号码

追答

你把代码添加到这句代码“返回数组 = 分割文本 (返回文本, “|”, )”之后才行。也就是执行了返回数组 = 分割文本 (返回文本, “|”, )这条命令之后执行"输出调试文本 (“数组成员数:” + 到文本 (取数组成员数 (返回数组)))"
先按我说的试试,不得的话你再发源码,放到网盘上吧

本回答被提问者采纳
第4个回答  2013-11-25
1L说的很详细,简单点说就是因为没有分割到东西,所以这个数组是空数组(0),下标为1就超出范围报错了.
相似回答