找回密码
 加入
搜索
查看: 2211|回复: 5

[AU3基础] 双重循环的问题【已解决】

  [复制链接]
发表于 2012-4-8 09:37:20 | 显示全部楼层 |阅读模式
本帖最后由 whitehead 于 2012-4-8 17:23 编辑

我有一个程序,其中一段要完成以下任务:
我设定第一循环工作最多20次,该循环每一步最多从 $i=0 to 9 用不同地址从搜索引擎读取内容10次,而每次从搜索引擎读取内容使用的地址是从编辑框1读到的地址尾部添加一个字符$i。
倘若某一次匹配成功,就将这次使用的地址写回编辑框1,然后进入下一步并重复以上过程(不同的是编辑框1的内容改变了)
倘若某一步,10次从搜索引擎读取的内容都无法匹配,则整个循环结束。

这儿有两个不确定:
1、无法预计每一步从搜索引擎读取内容几次(但知道最多10次)
2、无法预计整个循环运行多少步结束(但知道最多20步)

以下程序片段有问题,但我不知错在何处,请大侠指点。


Dim $I,$J, $J=1,  $i=0
For $J=1 to 20  ;第一循环
$URL=GUICtrlRead($Edit1)  ;从编辑框1读地址数据
  For $i=0 to 9   ;第二循环,
  $HTML=_SEND ( $URL&$i  )   ;以上地址配上一个数字后从搜索引擎读取内容
  $Patern=GUICtrlRead($Edit2)    ;从编辑框2读正则表达式
  $TMP=STRINGREGEXP($HTML,$Patern,0)  ;用上述正则表达式与以上网页内容匹配
      If $TMP=1 Then
      GUICtrlSetData($Edit1, $URL&$i);将匹配成功的$i添到开始读入的地址后写入编辑框1
      ExitLoop     ;匹配成功就跳出$J时的第二循环进入$J+1时的第二循环
      Sleep(10001) ;暂停10秒
      ElseIf $i=9 AND $TMP=0 Then  
      ExitLoop  ;如果$J时的第二循环运行结束但都不匹配,则第一循环或程序结束
      ENDIF
   Next
Next

评分

参与人数 1金钱 +20 收起 理由
afan + 20 感谢主动将修改帖子分类为[已解决],请继续 ...

查看全部评分

 楼主| 发表于 2012-4-8 14:59:31 | 显示全部楼层
回复 3# 处男
处男兄可能误解我的问题了。
我的问题是两个循环何时结束都需要判断。我写的代码应该是错的,但我不知错在何处。
发表于 2012-4-8 15:19:24 | 显示全部楼层
For 1 to 20  ;第一循环
$URL=GUICtrlRead($Edit1)  ;从编辑框1读地址数据
  For 1 to 10  ;第二循环,
  $HTML=_SEND ( $URL&$i  )   ;以上地址配上一个数字后从搜索引擎读取内容
  $Patern=GUICtrlRead($Edit2)    ;从编辑框2读正则表达式
  $TMP=STRINGREGEXP($HTML,$Patern,0)  ;用上述正则表达式与以上网页内容匹配
      If $TMP[0]=1 Then
      GUICtrlSetData($Edit1, $URL&$i);将匹配成功的$i添到开始读入的地址后写入编辑框1
      ExitLoop     ;匹配成功就跳出$J时的第二循环进入$J+1时的第二循环
   Next
Next
发表于 2012-4-8 15:25:55 | 显示全部楼层
纯粹靠猜
Dim $I, $J

For $J = 1 To 20        ;第一循环
        $URL = GUICtrlRead($Edit1)                ;从编辑框1读地址数据
        For $I = 0 To 9        ;第二循环
                $HTML = _send($URL & $I)        ;以上地址配上一个数字后从搜索引擎读取内容
                $Patern = GUICtrlRead($Edit2)        ;从编辑框2读正则表达式
                $TMP = StringRegExp($HTML, $Patern)        ;用上述正则表达式与以上网页内容匹配
                If $TMP Then
                        GUICtrlSetData($Edit1, $URL & $I)        ;将匹配成功的$i添到开始读入的地址后写入编辑框1
                        Sleep(10000)                ;暂停10秒
                        ExitLoop                ;匹配成功就跳出$J时的第二循环进入$J + 1时的第二循环
                ElseIf $I = 9 Then
                        ExitLoop 2                ;如果$J时的第二循环运行结束但都不匹配,则第一循环或程序结束
                EndIf
        Next
Next

评分

参与人数 1金钱 +30 贡献 +10 收起 理由
whitehead + 30 + 10 成功,再次感谢

查看全部评分

 楼主| 发表于 2012-4-8 16:41:44 | 显示全部楼层
谢谢版主,等我测试成功再改标题
 楼主| 发表于 2012-4-8 17:24:53 | 显示全部楼层
成功,再次感谢
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-5-7 23:41 , Processed in 0.083034 second(s), 24 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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