精易论坛

标题: 麻烦帮忙看看关于错误信息: 数组成员引用下标超出定义范围 [打印本页]

作者: 澎湃物联    时间: 2024-3-23 18:09
标题: 麻烦帮忙看看关于错误信息: 数组成员引用下标超出定义范围


  
子程序名返回值类型公开备 注
屏幕图片输入逻辑型 
参数名类 型参考可空数组备 注
参_连接ID整数型
参_数据字节集
变量名类 型静态数组备 注
局_i整数型 
局_组位整数型 
局_分块_顶边整数型0
局_分块_左边整数型0
局_分块_大小整数型0
局_分块_图片字节集0
局_压缩包长度整数型 
局_成员数整数型 
局_取到位置整数型 
局_图片数据字节集 
计次循环首 (取数组成员数 (集_屏幕操作界面), 局_i)
如果真 (集_屏幕操作界面 [局_i].标记号 = 参_连接ID)
局_组位 = 局_i
跳出循环 ()

计次循环尾 ()
如果真 (局_组位 = 0)
返回 ()
如果真 (取反 (集_屏幕操作界面 [局_组位].选择框_屏幕传输.选中))
返回 ()

局_取到位置 = 1
局_成员数 = 取字节集数据 (参_数据, #整数型, 局_取到位置)
如果真 (局_成员数 = 0)
返回 ()
重定义数组 (局_分块_顶边, 假, 局_成员数)
重定义数组 (局_分块_左边, 假, 局_成员数)
重定义数组 (局_分块_大小, 假, 局_成员数)
重定义数组 (局_分块_图片, 假, 局_成员数)
计次循环首 (局_成员数, 局_i)
局_分块_顶边 [局_i]取字节集数据 (参_数据, #整数型, 局_取到位置)
局_分块_左边 [局_i]取字节集数据 (参_数据, #整数型, 局_取到位置)
局_分块_大小 [局_i]取字节集数据 (参_数据, #整数型, 局_取到位置)
计次循环尾 ()
局_压缩包长度 = 取字节集数据 (参_数据, #整数型, 局_取到位置)
局_图片数据 = 网页_GZIP解压 (取字节集右边 (参_数据, 局_压缩包长度))
局_取到位置 = 1
计次循环首 (局_成员数, 局_i)
局_分块_图片 [局_i]取字节集中间 (局_图片数据, 局_取到位置, 局_分块_大小 [局_i])
局_取到位置 = 局_取到位置 + 局_分块_大小 [局_i]
集_屏幕操作界面 [局_组位].位图操作_差异.置颜色数据 (局_分块_图片 [局_i])
集_屏幕操作界面 [局_组位].位图操作_差异.复制到 (集_屏幕操作界面 [局_组位].位图操作_屏幕, 0, 0, 集_屏幕操作界面 [局_组位].屏幕_图片宽度, 集_屏幕操作界面 [局_组位].屏幕_图片高度, 局_分块_左边 [局_i], 局_分块_顶边 [局_i])
计次循环尾 ()
集_屏幕操作界面 [局_组位].标签_差异数据.调用反馈事件 (_写内存文本 (取空白文本 (取文本长度 (到文本 (局_成员数)) - 3)到文本 (局_成员数)“-”转换_转数据大小为标准显示 (到文本 (局_压缩包长度))), 局_组位, )
返回 ()


出问题的代码如下:
  
计次循环首 (局_成员数, 局_i)
局_分块_图片 [局_i]取字节集中间 (局_图片数据, 局_取到位置, 局_分块_大小 [局_i])
局_取到位置 = 局_取到位置 + 局_分块_大小 [局_i]
集_屏幕操作界面 [局_组位].位图操作_差异.置颜色数据 (局_分块_图片 [局_i])
集_屏幕操作界面 [局_组位].位图操作_差异.复制到 (集_屏幕操作界面 [局_组位].位图操作_屏幕, 0, 0, 集_屏幕操作界面 [局_组位].屏幕_图片宽度, 集_屏幕操作界面 [局_组位].屏幕_图片高度, 局_分块_左边 [局_i], 局_分块_顶边 [局_i])



错误弹窗截图:
错误代码:集_屏幕操作界面 [局_组位].位图操作_差异.置颜色数据 (局_分块_图片 [局_i])

根据到错误运行位置得出上面这句代码的位置,麻烦帮忙看看如何修改

作者: ASSHOLE    时间: 2024-3-23 18:19
看不出来,有没有一种可能是 集_屏幕操作界面  这个变量和其它代码冲突了
作者: 澎湃物联    时间: 2024-3-23 18:24
代码是https://125.confly.eu.org/forum.php?mod=viewthread&tid=14744852
什么都没改过,我生成以后吧客户Duan放到我其他电脑上使用,服务端在挨个查看屏幕时的错误
作者: wtflxk    时间: 2024-3-23 18:29
用计次循环首 局_组位这个变量会出问题 比如说数组是6那么执行完后 这个 局_组位=7 这样就会出错了。
作者: 澎湃物联    时间: 2024-3-23 18:30
ncagzs 发表于 2024-3-23 18:29
用计次循环首 局_组位这个变量会出问题 比如说数组是6那么执行完后 这个 局_组位=7 这样就会出错了。 ...

能否贴一下代码
作者: 强盛科技    时间: 2024-3-23 18:59
能不能把 3个计次循环的 局_i这个记录都独立。你这样在一个子程序中肯定是混乱的
作者: wtflxk    时间: 2024-3-23 19:18
澎湃物联 发表于 2024-3-23 18:30
能否贴一下代码

局_成员数 = 取字节集数据 (参_数据, #整数型, 局_取到位置)
根据你提示的错误 位置 就应该这是这里不对了。你好好的调试一这个位置的代码吧
作者: 冯古屋    时间: 2024-3-23 20:49
问题提示已经很明确,就是数组超范围了,本来数组里面就3个数,你让它取第4个内容,肯定会报错,这类问题,调试输出看看数组里面的内容,以及你循环取的下标数,我相信应该会有结果的。
作者: Suky    时间: 2024-3-23 21:45
检查了一遍你贴出来的代码,子程序局部变量内的所有数组相关代码都没问题
有问题的就在于  集_屏幕操作界面  这个数组不是当前子程序确定的
建议确认一下贴出来的代码运行的时候是否依然有外部命令在删改该数组  

补充内容 (2024-3-23 21:45):
如果数组不变动,按照贴出来的代码来看,不应该存在数组越界的情况
作者: 澎湃物联    时间: 2024-3-24 21:20
ncagzs 发表于 2024-3-23 18:29
用计次循环首 局_组位这个变量会出问题 比如说数组是6那么执行完后 这个 局_组位=7 这样就会出错了。 ...

查看过代码,不知道用什么替换了
作者: 澎湃物联    时间: 2024-3-24 21:21
Suky 发表于 2024-3-23 21:45
检查了一遍你贴出来的代码,子程序局部变量内的所有数组相关代码都没问题
有问题的就在于  集_屏幕操作界面 ...

我感觉应该是超级列表框多线程的问题
作者: 澎湃物联    时间: 2024-3-24 21:21
冯古屋 发表于 2024-3-23 20:49
问题提示已经很明确,就是数组超范围了,本来数组里面就3个数,你让它取第4个内容,肯定会报错,这类问题, ...

大佬能帮看看么 源码贴出来了
作者: Suky    时间: 2024-3-24 21:52
澎湃物联 发表于 2024-3-24 21:21
我感觉应该是超级列表框多线程的问题

知道问题可能的位置就去查
就你贴出来的代码,唯一可能出现问题的情况就是数组被其他线程删改了




欢迎光临 精易论坛 (https://125.confly.eu.org/) Powered by Discuz! X3.4