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

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

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

  2. Global $array[2]
  3. $array[0] = "1"
  4. $array[1] = ""

  5. For $i = 0 To UBound($array) - 1 Step 1
  6.     MsgBox(0,0,UBound($array) & " " & $i & " ")
  7.     If (StringIsAlNum($array[$i]) = 0) Then
  8.         _ArrayDelete($array, $i)
  9.         $i -= 1
  10.     EndIf
  11.     MsgBox(1,1,UBound($array) & " " & $i & " " & $array[$i])
  12. 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, 2026-9-22 09:02 , Processed in 0.068709 second(s), 23 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2026 Discuz! Team.

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