Jump to content
Sign in to follow this  
Toady

Breaking out of loop with a hotkey

Recommended Posts

Toady

I want to break out of a loop within a function and replay the same function with a hotkey but not go back to the original function and continue where it left off. Is this possible? Or does this don't make any sense? As of right now a hotkey acts like an interrupt, "run new subroutine then go back where it left off". I dont want that. Below is some pseudo code. Thanks.

Func myloop()

While 1
    ..
    do stuff until a hotkey is pressed
   if hotkey pressed then start this function over but dont come back and finish where it left off before hotkey was pressed.
    ..
Wend

EndFunc

www.itoady.com

A* (A-star) Searching Algorithm - A.I. Artificial Intelligence bot path finding

Share this post


Link to post
Share on other sites
GEOSoft

I want to break out of a loop within a function and replay the same function with a hotkey but not go back to the original function and continue where it left off. Is this possible? Or does this don't make any sense? As of right now a hotkey acts like an interrupt, "run new subroutine then go back where it left off". I dont want that. Below is some pseudo code. Thanks.

Func myloop()

While 1
    ..
    do stuff until a hotkey is pressed
   if hotkey pressed then start this function over but dont come back and finish where it left off before hotkey was pressed.
    ..
Wend

EndFunc
HotKeySet("Key","MyLoop")

George

Question about decompiling code? Read the decompiling FAQ and don't bother posting the question in the forums.

Be sure to read and follow the forum rules. -AKA the AutoIt Reading and Comprehension Skills test.***

The PCRE (Regular Expression) ToolKit for AutoIT - (Updated Oct 20, 2011 ver:3.0.1.13) - Please update your current version before filing any bug reports. The installer now includes both 32 and 64 bit versions. No change in version number.

Visit my Blog .. currently not active but it will soon be resplendent with news and views. Also please remove any links you may have to my website. it is soon to be closed and replaced with something else.

"Old age and treachery will always overcome youth and skill!"

Share this post


Link to post
Share on other sites
Toady

HotKeySet("Key","MyLoop")

Yes, but this will create a large stack of return addresses if this hotkey gets pressed a ton of times.


www.itoady.com

A* (A-star) Searching Algorithm - A.I. Artificial Intelligence bot path finding

Share this post


Link to post
Share on other sites
PsaltyDS

The loop needs to watch an external (Global) flag for when to exit. Simple timer script for a demo:

Global $TimerRun
HotKeySet("r", "_StopTimer") ; Hit 'r' to restart
HotKeySet("x", "_Quit") ; Hit 'x' to exit
While 1
    $Seconds = _MyTimer()
    ConsoleWrite("Timer: " & $Seconds & " seconds elapsed" & @LF)
WEnd

; 1=Run, 0=Stop
Func _MyTimer()
    $TimerRun = 1
    Local $CurrTime = TimerInit()
    Local $Elapsed = 0
    While $TimerRun
        If TimerDiff($CurrTime) > 1000 Then
            $Elapsed += 1
            ToolTip("Elapsed Time (sec): " & $Elapsed, 100, 100)
            $CurrTime = TimerInit()
        EndIf
        Sleep(20)
    WEnd
    Return $Elapsed
EndFunc   ;==>_MyTimer

Func _StopTimer()
    $TimerRun = 0
EndFunc   ;==>_StopTimer

Func _Quit()
    Exit
EndFunc   ;==>_Quit

:shocked:


Valuater's AutoIt 1-2-3, Class... Is now in Session!For those who want somebody to write the script for them: RentACoder"Any technology distinguishable from magic is insufficiently advanced." -- Geek's corollary to Clarke's law

Share this post


Link to post
Share on other sites
Toady

The loop needs to watch an external (Global) flag for when to exit. Simple timer script for a demo:

Global $TimerRun
HotKeySet("r", "_StopTimer") ; Hit 'r' to restart
HotKeySet("x", "_Quit") ; Hit 'x' to exit
While 1
    $Seconds = _MyTimer()
    ConsoleWrite("Timer: " & $Seconds & " seconds elapsed" & @LF)
WEnd

; 1=Run, 0=Stop
Func _MyTimer()
    $TimerRun = 1
    Local $CurrTime = TimerInit()
    Local $Elapsed = 0
    While $TimerRun
        If TimerDiff($CurrTime) > 1000 Then
            $Elapsed += 1
            ToolTip("Elapsed Time (sec): " & $Elapsed, 100, 100)
            $CurrTime = TimerInit()
        EndIf
        Sleep(20)
    WEnd
    Return $Elapsed
EndFunc   ;==>_MyTimer

Func _StopTimer()
    $TimerRun = 0
EndFunc   ;==>_StopTimer

Func _Quit()
    Exit
EndFunc   ;==>_Quit

:shocked:

Oh sweet, thats exactly what I need, THANKS :(

www.itoady.com

A* (A-star) Searching Algorithm - A.I. Artificial Intelligence bot path finding

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

×