zcsgamer 发表于 2013-8-22 14:53:10

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

#Include <Array.au3>

Global $array
$array = "1"
$array = ""

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不符合循环条件居然循环进去了,哪里出问题了?

zch11230 发表于 2013-8-22 15:46:21

第一个 可以试试看 if not StringIsAlNum($array[$i]) then
第二个 arraydelete之后数组的维度就变小了 然而$i的大小在开始循环的时候就确定了 一旦超出数组的维度就会报错简单点的办法是倒序循环
For $i= UBound($array) - 1 to 0 Step -1

zcsgamer 发表于 2013-8-22 15:50:02

回复 2# zch11230


    我还以为是每次循环都要重新检测一遍UBound($array),谢了哈
页: [1]
查看完整版本: for的条件检测是怎么判断的,_ArrayDelete删除数组后循环报错