kor Posted August 3, 2012 Share Posted August 3, 2012 Sample Code What I'm trying to do is, if you run the first loop, if $i = any of the values from the $aIgnore array, then continue loop. I've tried it this way. Local $aCheck[10] = ["a", "b", "c", "d", "e", "f", "g", "h", "i", "j"] Local $aIgnore[3] = ["b", "d", "g"] For $i = 0 To UBound($aCheck) - 1 For $n = 0 To UBound($aIgnore) - 1 If $i = $aIgnore[$n] Then ContinueLoop ConsoleWrite($aCheck[$i] & " ") Next Next ConsoleWrite(@cr) And this way (which I'm sure is wrong) Local $aCheck[10] = ["a", "b", "c", "d", "e", "f", "g", "h", "i", "j"] Local $aIgnore[3] = ["b", "d", "g"] For $i = 0 To UBound($aCheck) - 1 If $i = $aIgnore Then ContinueLoop ConsoleWrite($aCheck[$i] & " ") Next ConsoleWrite(@cr) Link to comment Share on other sites More sharing options...
Moderators Melba23 Posted August 3, 2012 Moderators Share Posted August 3, 2012 kor, Try this: Local $aCheck[10] = ["a", "b", "c", "d", "e", "f", "g", "h", "i", "j"] Local $aIgnore[3] = ["b", "d", "g"] For $j = 0 To UBound($aCheck) - 1 ; Get the next item in the array to check $sItem = $aCheck[$j] ; Set a flag $fValid = True ; Now loop through the exceptions For $i = 0 To UBound($aIgnore) - 1 ; If it matches clear the flag If $sItem == $aIgnore[$i] Then $fValid = False EndIf Next ; If the flag is set it is a valid item If $fValid Then ConsoleWrite($aCheck[$j] & @CRLF) Next All clear? M23 Any of my own code posted anywhere on the forum is available for use by others without any restriction of any kind Open spoiler to see my UDFs: Spoiler ArrayMultiColSort ---- Sort arrays on multiple columnsChooseFileFolder ---- Single and multiple selections from specified path treeview listingDate_Time_Convert -- Easily convert date/time formats, including the language usedExtMsgBox --------- A highly customisable replacement for MsgBoxGUIExtender -------- Extend and retract multiple sections within a GUIGUIFrame ---------- Subdivide GUIs into many adjustable framesGUIListViewEx ------- Insert, delete, move, drag, sort, edit and colour ListView itemsGUITreeViewEx ------ Check/clear parent and child checkboxes in a TreeViewMarquee ----------- Scrolling tickertape GUIsNoFocusLines ------- Remove the dotted focus lines from buttons, sliders, radios and checkboxesNotify ------------- Small notifications on the edge of the displayScrollbars ----------Automatically sized scrollbars with a single commandStringSize ---------- Automatically size controls to fit textToast -------------- Small GUIs which pop out of the notification area Link to comment Share on other sites More sharing options...
kor Posted August 3, 2012 Author Share Posted August 3, 2012 Sort of. This works Local $aControls[10] = ["a", "b", "c", "d", "e", "f", "g", "h", "i", "j"] _Validate($aControls) Func _Validate(ByRef $aInput) Local $aOptional[2] = ["b", "c"] For $i = 0 To UBound($aInput) - 1 ;ConsoleWrite($aInput[$i] & " ") For $n = 0 To UBound($aOptional) - 1 ;ConsoleWrite($aOptional[$n] & " ") If $aInput[$i] == $aOptional[$n] Then ContinueLoop 2 EndIf Next ConsoleWrite($aInput[$i]) Next EndFunc However how would I accomplish the same thing with array element ID's rather than the actual value in the array? Example of code using array element ID's rather than values. But it doesn't work. Local $aControls[10] = ["a", "b", "c", "d", "e", "f", "g", "h", "i", "j"] _Validate($aControls) Func _Validate(ByRef $aInput) Local $aOptional[2] = [2, 3] For $i = 0 To UBound($aInput) - 1 ;ConsoleWrite($aInput[$i] & " ") For $n = 0 To UBound($aOptional) - 1 ;ConsoleWrite($aOptional[$n] & " ") If $aInput[$i] == $aOptional[$n] Then ContinueLoop 2 EndIf Next ConsoleWrite($aInput[$i]) Next EndFunc Link to comment Share on other sites More sharing options...
BrewManNH Posted August 3, 2012 Share Posted August 3, 2012 If $i = $aOptional[$n] Then If I posted any code, assume that code was written using the latest release version unless stated otherwise. Also, if it doesn't work on XP I can't help with that because I don't have access to XP, and I'm not going to.Give a programmer the correct code and he can do his work for a day. Teach a programmer to debug and he can do his work for a lifetime - by Chirag GudeHow to ask questions the smart way! I hereby grant any person the right to use any code I post, that I am the original author of, on the autoitscript.com forums, unless I've specifically stated otherwise in the code or the thread post. If you do use my code all I ask, as a courtesy, is to make note of where you got it from. Back up and restore Windows user files _Array.au3 - Modified array functions that include support for 2D arrays. - ColorChooser - An add-on for SciTE that pops up a color dialog so you can select and paste a color code into a script. - Customizable Splashscreen GUI w/Progress Bar - Create a custom "splash screen" GUI with a progress bar and custom label. - _FileGetProperty - Retrieve the properties of a file - SciTE Toolbar - A toolbar demo for use with the SciTE editor - GUIRegisterMsg demo - Demo script to show how to use the Windows messages to interact with controls and your GUI. - Latin Square password generator Link to comment Share on other sites More sharing options...
Moderators Melba23 Posted August 3, 2012 Moderators Share Posted August 3, 2012 kor,Sort ofGood way of making sure you get ignored for a while. M23P.S. Only kidding. Any of my own code posted anywhere on the forum is available for use by others without any restriction of any kind Open spoiler to see my UDFs: Spoiler ArrayMultiColSort ---- Sort arrays on multiple columnsChooseFileFolder ---- Single and multiple selections from specified path treeview listingDate_Time_Convert -- Easily convert date/time formats, including the language usedExtMsgBox --------- A highly customisable replacement for MsgBoxGUIExtender -------- Extend and retract multiple sections within a GUIGUIFrame ---------- Subdivide GUIs into many adjustable framesGUIListViewEx ------- Insert, delete, move, drag, sort, edit and colour ListView itemsGUITreeViewEx ------ Check/clear parent and child checkboxes in a TreeViewMarquee ----------- Scrolling tickertape GUIsNoFocusLines ------- Remove the dotted focus lines from buttons, sliders, radios and checkboxesNotify ------------- Small notifications on the edge of the displayScrollbars ----------Automatically sized scrollbars with a single commandStringSize ---------- Automatically size controls to fit textToast -------------- Small GUIs which pop out of the notification area Link to comment Share on other sites More sharing options...
kor Posted August 3, 2012 Author Share Posted August 3, 2012 kor,Good way of making sure you get ignored for a while. M23P.S. Only kidding. I like to think that me posting sample code insures I don't get ignore. At least it shows I'm trying Link to comment Share on other sites More sharing options...
czardas Posted August 3, 2012 Share Posted August 3, 2012 (edited) Here's a related idea I was playing around with today. This is a possible method to run a check after every 100 loops have been completed. Although the example doesn't skip any loops, it illustrates a potentially viable alternative method for doing so (and therefore a metthod for skipping an array element). It may not be useful in this particular case, but it may be of interest to someone. For $i = 1 To 1000 If $i < 1000 - 100 Then ; Only run 100 loops at a time For $i = $i To $i + 99 ; Loop 100 times ConsoleWrite("Loop " & $i & @LF) ; Checking loop number Sleep(10) ; Some process which could take a long time Next $i -= 1 ; This is necessary to avoid accidentally skipping one in every 100 loops ConsoleWrite("Running conditional statement after " & $i & " loops" & @LF) ; Imterrupt Else ; Loop through the remaining values for $i For $i = $i To 1000 ConsoleWrite("loop " & $i & @LF) ; Checking loop number Sleep(10) ; Same process as above which could take a long time Next ExitLoop ; Otherwise $i will be incremented twice at the end, and we don't want that! EndIf Next ConsoleWrite("Completed " & $i -1 & " loops" & @LF) Edited August 3, 2012 by czardas operator64 ArrayWorkshop Link to comment Share on other sites More sharing options...
GMK Posted August 3, 2012 Share Posted August 3, 2012 (edited) I've also used _ArraySearch for similar tasks. #include <Array.au3> Local $aCheck[10] = ["a", "b", "c", "d", "e", "f", "g", "h", "i", "j"] Local $aIgnore[3] = ["b", "d", "g"] For $iRow = 0 To UBound($aCheck) - 1 _ArraySearch($aIgnore, $aCheck[$iRow]) If @error Then ConsoleWrite($aCheck[$iRow] & @CRLF) Next Edit: However how would I accomplish the same thing with array element ID's rather than the actual value in the array?#include <Array.au3> Local $aControls[10] = ["a", "b", "c", "d", "e", "f", "g", "h", "i", "j"] _Validate($aControls) Func _Validate(ByRef $aInput) Local $aOptional[2] = [2, 3] For $i = 0 To UBound($aInput) - 1 _ArraySearch($aOptional, $i) If @error Then ConsoleWrite($aInput[$i]) Next ConsoleWrite(@CRLF) EndFunc ;==>_Validate Edited August 3, 2012 by GMK Link to comment Share on other sites More sharing options...
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now