按键精灵吧 关注:499,333贴子:1,005,129
  • 19回复贴,共1

请教大神一个循环中单次跳过的问题

只看楼主收藏回复

本人学习中,现在遇到情况如下,for循环中
for i = 0 to 5
操作1
操作2
操作3
……
i = i + 1
next
问题:如果在循环1---4次的某一次中途出错,比如i=3时操作2嵌套的循环找图找不到,可以用线程暂停,然后能否用什么方法跳过本次循环剩余的操作,开始i+1的下一次循环?
我找了个思路,试着在for开始后做个标记,循环出错暂停时提取i的值并赋值变量,加一个按钮事件,在按钮事件中给变量+1再还给i,然后goto跳转到标记,但是好像在事件之间不能跳转?
请教大神,有没有其他办法达到思路中的这种效果?


IP属地:广东来自Android客户端1楼2021-04-07 22:33回复
    各位大神,这个不能实现的吗?


    IP属地:广东来自Android客户端2楼2021-04-08 07:13
    回复
      能啊


      IP属地:山西来自Android客户端3楼2021-04-08 08:59
      收起回复
        goto就能轻松实现,还要啥其他方法?


        IP属地:广东4楼2021-04-08 10:25
        收起回复
          for
          找图1
          if 找到 then
          找图2
          if 找到 then:找图3:end if
          end if
          next


          IP属地:广东来自Android客户端5楼2021-04-08 10:27
          收起回复
            可能问题没有描述准备,大家误会了。for循环中并不是只有一个找图操作,能找不到就跳过。而是很多操作,而且在任何一步都可能出错,出错以后一般就用线程暂停,然后手工操作本次循环剩余的操作,再继续i+1的下次循环。循环中的Call子程序,基本是do...Loop找图确认界面,所以出错基本不会继续往后运行可以用线程暂停。
            Sub departure()
            Call 查找句柄()
            Call cz()
            Call ck()
            Call ckxs()
            Call gbck()
            Dim Train,Line
            Dim City(11)
            City(0)="巴黎"
            City(1)="纽约"
            City(2)= "北京"
            City(3)="东京"
            City(4)="新德里"
            City(5)= "洛杉矶"
            City(6)="安克雷奇"
            City(7)= "夏威夷"
            City(8)="伦敦"
            City(9)= "华盛顿"
            City(10)="马德里"
            City(11) = "多伦多"
            Delay 100
            // 问题出现区域
            For i = 0 To 11
            Call jck()
            Call qk()
            Delay 50
            Call Plugin.WndEx7_70.SetFakeActive(Hwnd, 0)
            Delay 50
            Call Plugin.Bkgnd.SendString(Hwnd, City(i))
            Delay 100
            Call Plugin.Bkgnd.LeftClick(Hwnd, 295, 535)
            Call ck()
            Dim CxArray
            CxArray =Array(Ca,Cb,Cc,Cd,Ce,Cf)
            Ca = Form1.ComboBox7.ListIndex
            Cb = Form1.ComboBox8.ListIndex
            Cc = Form1.ComboBox9.ListIndex
            Cd = Form1.ComboBox10.ListIndex
            Ce = Form1.ComboBox11.ListIndex
            Cf = Form1.ComboBox12.ListIndex
            If i=0 or i=1 then
            Train=Ca
            ElseIf i = 2 or i = 3 Then
            Train=Cb
            ElseIf i = 4 or i = 5 Then
            Train=Cc
            ElseIf i = 6 or i = 7 Then
            Train=Cd
            ElseIf i = 8 or i = 9 Then
            Train = Ce + 2
            ElseIf i = 10 or i = 11 Then
            Train = Cf + 2
            Else
            MessageBox "车辆设置错误,停止运行"
            EndScript
            End If
            Delay 100
            TracePrint Train
            If Train = 1 Then
            Call swsc()
            ElseIf Train = 2 Then
            Call swcx()
            ElseIf Train = 3 Then
            Call xzsc()
            ElseIf Train = 4 Then
            Call xzcx()
            End If
            Delay 100
            Call Plugin.Bkgnd.LeftClick(Hwnd, 720, 550)
            Delay 100
            Call cz()
            Delay 100
            Form1.InputBox1.Text = City(i) & "完成"
            Delay 100
            Next
            // 问题出现区域
            Delay 100
            Form1.InputBox1.Text = "全部完成"
            Delay 100
            End Sub


            IP属地:广东6楼2021-04-08 10:51
            回复


              IP属地:广东来自Android客户端7楼2021-04-08 11:06
              收起回复
                rem marker
                i=1+i
                if i<=imax then
                call 搞事()//里面插goto marker
                goto marker
                end if


                IP属地:广东来自Android客户端8楼2021-04-08 13:37
                收起回复