Jump to content
Sign in to follow this  
szucsaaron

loops in loops?

Recommended Posts

szucsaaron

Hi!

I was wandering if i could make a script where there are like:

While 1
...
While 2
...
Wend
...
Wend

Please reply!

Share this post


Link to post
Share on other sites
guinness

You can do that, plus to exit a loop look at ExitLoop.


UDF List:

 
_AdapterConnections()_AlwaysRun()_AppMon()_AppMonEx()_ArrayFilter/_ArrayReduce_BinaryBin()_CheckMsgBox()_CmdLineRaw()_ContextMenu()_ConvertLHWebColor()/_ConvertSHWebColor()_DesktopDimensions()_DisplayPassword()_DotNet_Load()/_DotNet_Unload()_Fibonacci()_FileCompare()_FileCompareContents()_FileNameByHandle()_FilePrefix/SRE()_FindInFile()_GetBackgroundColor()/_SetBackgroundColor()_GetConrolID()_GetCtrlClass()_GetDirectoryFormat()_GetDriveMediaType()_GetFilename()/_GetFilenameExt()_GetHardwareID()_GetIP()_GetIP_Country()_GetOSLanguage()_GetSavedSource()_GetStringSize()_GetSystemPaths()_GetURLImage()_GIFImage()_GoogleWeather()_GUICtrlCreateGroup()_GUICtrlListBox_CreateArray()_GUICtrlListView_CreateArray()_GUICtrlListView_SaveCSV()_GUICtrlListView_SaveHTML()_GUICtrlListView_SaveTxt()_GUICtrlListView_SaveXML()_GUICtrlMenu_Recent()_GUICtrlMenu_SetItemImage()_GUICtrlTreeView_CreateArray()_GUIDisable()_GUIImageList_SetIconFromHandle()_GUIRegisterMsg()_GUISetIcon()_Icon_Clear()/_Icon_Set()_IdleTime()_InetGet()_InetGetGUI()_InetGetProgress()_IPDetails()_IsFileOlder()_IsGUID()_IsHex()_IsPalindrome()_IsRegKey()_IsStringRegExp()_IsSystemDrive()_IsUPX()_IsValidType()_IsWebColor()_Language()_Log()_MicrosoftInternetConnectivity()_MSDNDataType()_PathFull/GetRelative/Split()_PathSplitEx()_PrintFromArray()_ProgressSetMarquee()_ReDim()_RockPaperScissors()/_RockPaperScissorsLizardSpock()_ScrollingCredits_SelfDelete()_SelfRename()_SelfUpdate()_SendTo()_ShellAll()_ShellFile()_ShellFolder()_SingletonHWID()_SingletonPID()_Startup()_StringCompact()_StringIsValid()_StringRegExpMetaCharacters()_StringReplaceWholeWord()_StringStripChars()_Temperature()_TrialPeriod()_UKToUSDate()/_USToUKDate()_WinAPI_Create_CTL_CODE()_WinAPI_CreateGUID()_WMIDateStringToDate()/_DateToWMIDateString()Au3 script parsingAutoIt SearchAutoIt3 PortableAutoIt3WrapperToPragmaAutoItWinGetTitle()/AutoItWinSetTitle()CodingDirToHTML5FileInstallrFileReadLastChars()GeoIP databaseGUI - Only Close ButtonGUI ExamplesGUICtrlDeleteImage()GUICtrlGetBkColor()GUICtrlGetStyle()GUIEventsGUIGetBkColor()Int_Parse() & Int_TryParse()IsISBN()LockFile()Mapping CtrlIDsOOP in AutoItParseHeadersToSciTE()PasswordValidPasteBinPosts Per DayPreExpandProtect GlobalsQueue()Resource UpdateResourcesExSciTE JumpSettings INISHELLHOOKShunting-YardSignature CreatorStack()Stopwatch()StringAddLF()/StringStripLF()StringEOLToCRLF()VSCROLLWM_COPYDATAMore Examples...

Updated: 22/04/2018

Share this post


Link to post
Share on other sites
IanN1990

or you could add the condition to the while loop itself

While $X = 0

If ... Then $X = 1

Wend
Edited by IanN1990

Share this post


Link to post
Share on other sites
guinness

so shall it look like:

While 1
...
While 2
...
If ... then
Exitloop
Endif
Wend
Wend

Yeh, it just depends what you want to do.

UDF List:

 
_AdapterConnections()_AlwaysRun()_AppMon()_AppMonEx()_ArrayFilter/_ArrayReduce_BinaryBin()_CheckMsgBox()_CmdLineRaw()_ContextMenu()_ConvertLHWebColor()/_ConvertSHWebColor()_DesktopDimensions()_DisplayPassword()_DotNet_Load()/_DotNet_Unload()_Fibonacci()_FileCompare()_FileCompareContents()_FileNameByHandle()_FilePrefix/SRE()_FindInFile()_GetBackgroundColor()/_SetBackgroundColor()_GetConrolID()_GetCtrlClass()_GetDirectoryFormat()_GetDriveMediaType()_GetFilename()/_GetFilenameExt()_GetHardwareID()_GetIP()_GetIP_Country()_GetOSLanguage()_GetSavedSource()_GetStringSize()_GetSystemPaths()_GetURLImage()_GIFImage()_GoogleWeather()_GUICtrlCreateGroup()_GUICtrlListBox_CreateArray()_GUICtrlListView_CreateArray()_GUICtrlListView_SaveCSV()_GUICtrlListView_SaveHTML()_GUICtrlListView_SaveTxt()_GUICtrlListView_SaveXML()_GUICtrlMenu_Recent()_GUICtrlMenu_SetItemImage()_GUICtrlTreeView_CreateArray()_GUIDisable()_GUIImageList_SetIconFromHandle()_GUIRegisterMsg()_GUISetIcon()_Icon_Clear()/_Icon_Set()_IdleTime()_InetGet()_InetGetGUI()_InetGetProgress()_IPDetails()_IsFileOlder()_IsGUID()_IsHex()_IsPalindrome()_IsRegKey()_IsStringRegExp()_IsSystemDrive()_IsUPX()_IsValidType()_IsWebColor()_Language()_Log()_MicrosoftInternetConnectivity()_MSDNDataType()_PathFull/GetRelative/Split()_PathSplitEx()_PrintFromArray()_ProgressSetMarquee()_ReDim()_RockPaperScissors()/_RockPaperScissorsLizardSpock()_ScrollingCredits_SelfDelete()_SelfRename()_SelfUpdate()_SendTo()_ShellAll()_ShellFile()_ShellFolder()_SingletonHWID()_SingletonPID()_Startup()_StringCompact()_StringIsValid()_StringRegExpMetaCharacters()_StringReplaceWholeWord()_StringStripChars()_Temperature()_TrialPeriod()_UKToUSDate()/_USToUKDate()_WinAPI_Create_CTL_CODE()_WinAPI_CreateGUID()_WMIDateStringToDate()/_DateToWMIDateString()Au3 script parsingAutoIt SearchAutoIt3 PortableAutoIt3WrapperToPragmaAutoItWinGetTitle()/AutoItWinSetTitle()CodingDirToHTML5FileInstallrFileReadLastChars()GeoIP databaseGUI - Only Close ButtonGUI ExamplesGUICtrlDeleteImage()GUICtrlGetBkColor()GUICtrlGetStyle()GUIEventsGUIGetBkColor()Int_Parse() & Int_TryParse()IsISBN()LockFile()Mapping CtrlIDsOOP in AutoItParseHeadersToSciTE()PasswordValidPasteBinPosts Per DayPreExpandProtect GlobalsQueue()Resource UpdateResourcesExSciTE JumpSettings INISHELLHOOKShunting-YardSignature CreatorStack()Stopwatch()StringAddLF()/StringStripLF()StringEOLToCRLF()VSCROLLWM_COPYDATAMore Examples...

Updated: 22/04/2018

Share this post


Link to post
Share on other sites
szucsaaron

or like this?

While 1
While $X = 0
If... Then
$X = 1
EndIf
WEnd
Edited by szucsaaron

Share this post


Link to post
Share on other sites
IanN1990

Yea if you wanted, might want to add a sleep so dont you hog the cpu

While 1 ;Main Loop

sleep(250) ;Not to Hog Cpu

     While $Variable = 0 ; Secondary Loop and Condiction

     sleep(250) ;Not to Hog Cpu

          If ... Then ;Your code
          $Variable = 1 ;Breaks Secondary Loop and Returns to Main Loop
          Endif

     Wend ;End for Secondary Loop

Wend ;End for Main Loop

or

While 1 ;Main Loop

sleep(250) ;Not to Hog Cpu

     While 1 ; Secondary Loop

     sleep(250) ;Not to Hog Cpu

          If ... Then ;Your code
          ExitLoop ;Breaks Secondary Loop and Returns to Main Loop
          Endif

     Wend ;End for Secondary Loop

Wend ;End for Main Loop
Edited by IanN1990

Share this post


Link to post
Share on other sites
szucsaaron

Thanks for help it was really helpful!

Share this post


Link to post
Share on other sites
water

Just to explain how "While <expression>" works: The expression is evaluated and the loop executed as long as the result of the evaluation is True. If the expressions is set to 1 it's the equivalaten of True, thus creating an infinite loop.

You could write:

While 1
    While 1
        If ... Then ExitLoop ; Exit inner loop
        ; Your code for the inner loop (e.g. process the 2nd dimension (columns) of an array ...)
    WEnd
    If ... Then ExitLoop ; Exit outer loop
    ; Your code for the outer loop loop (e.g. process the 1st dimension (rows) of an array ...)
WEnd
Edited by water

My UDFs and Tutorials:

Spoiler

UDFs:
Active Directory (NEW 2018-10-19 - Version 1.4.10.0) - Download - General Help & Support - Example Scripts - Wiki
OutlookEX (2018-09-01 - Version 1.3.4.0) - Download - General Help & Support - Example Scripts - Wiki
ExcelChart (2017-07-21 - Version 0.4.0.1) - Download - General Help & Support - Example Scripts
PowerPoint (2017-06-06 - Version 0.0.5.0) - Download - General Help & Support
Excel - Example Scripts - Wiki
Word - Wiki
 
Tutorials:

ADO - Wiki

 

Share this post


Link to post
Share on other sites
armoros

Yea if you wanted, might want to add a sleep so dont you hog the cpu

In witch cases we get hog the cpu ?

When we put a lot of whiles/loops etc.


[font="verdana, geneva, sans-serif"] [/font]

Share this post


Link to post
Share on other sites
szucsaaron

Thanks water

Share this post


Link to post
Share on other sites
IanN1990

In witch cases we get hog the cpu ?

When we put a lot of whiles/loops etc.

While 1
If ProcessExists("AutoIt3.exe") Then ConsoleWrite("A")
WEnd

Uses 25% Cpu of this 2.40 GHX Quad Core CPU

While 1
Sleep(10)
If ProcessExists("AutoIt3.exe") Then ConsoleWrite("A")
WEnd

Uses 12% CPU

While 1
Sleep(250)
If ProcessExists("AutoIt3.exe") Then ConsoleWrite("A")
WEnd

Uses 0% CPU

Now unless the script needs Real-Time Responses, 250 is 1/4 of a second which in most cases is more then enough while keeping the CPU usage low.

In my view, when coding something script performance is very important. More so if your script is going to run on lots of or other machines, as maybe not everyone have the same gaming rig as you.

Edited by IanN1990

Share this post


Link to post
Share on other sites
armoros

Well IanN1990 the explanation can not get better..

Thank you my friend.. ;)


[font="verdana, geneva, sans-serif"] [/font]

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  

×