whitehead 发表于 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

whitehead 发表于 2012-4-8 14:59:31

回复 3# 处男
处男兄可能误解我的问题了。
我的问题是两个循环何时结束都需要判断。我写的代码应该是错的,但我不知错在何处。

cfs43210 发表于 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=1 Then
      GUICtrlSetData($Edit1, $URL&$i);将匹配成功的$i添到开始读入的地址后写入编辑框1
      ExitLoop   ;匹配成功就跳出$J时的第二循环进入$J+1时的第二循环
   Next
Next

afan 发表于 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

whitehead 发表于 2012-4-8 16:41:44

谢谢版主,等我测试成功再改标题

whitehead 发表于 2012-4-8 17:24:53

成功,再次感谢
页: [1]
查看完整版本: 双重循环的问题【已解决】