找回密码
 加入
搜索
查看: 3087|回复: 2

[AU3基础] for的条件检测是怎么判断的,_ArrayDelete删除数组后循环报错

[复制链接]
发表于 2013-8-22 14:53:10 | 显示全部楼层 |阅读模式
#Include <Array.au3>

Global $array[2]
$array[0] = "1"
$array[1] = ""

For $i = 0 To UBound($array) - 1 Step 1
    MsgBox(0,0,UBound($array) & " " & $i & " ")
    If (StringIsAlNum($array[$i]) = 0) Then
        _ArrayDelete($array, $i)
        $i -= 1
    EndIf
    MsgBox(1,1,UBound($array) & " " & $i & " " & $array[$i])
Next
不符合循环条件居然循环进去了,哪里出问题了?
发表于 2013-8-22 15:46:21 | 显示全部楼层
第一个 可以试试看 if not StringIsAlNum($array[$i]) then
第二个 arraydelete之后数组的维度就变小了 然而$i的大小在开始循环的时候就确定了 一旦超出数组的维度就会报错  简单点的办法是倒序循环
For $i= UBound($array) - 1 to 0 Step -1
 楼主| 发表于 2013-8-22 15:50:02 | 显示全部楼层
回复 2# zch11230


    我还以为是每次循环都要重新检测一遍UBound($array),谢了哈
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-12-24 20:19 , Processed in 0.081277 second(s), 23 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表