Medallyon Posted February 17, 2016 Posted February 17, 2016 (edited) Good Morning/Noon/Evening AutoItScripters, I have a problem. I have two existing arrays; one with entries and one empty. I want to check the full array for substrings, then insert them into the empty array and purge them from the first one. ConsoleWrite(@CRLF & "Purging Priority Entries from NormalEntry-Array.." & @CRLF) For $i=0 To UBound($aFiles)-1 If StringInStr($aFiles[$i], "#") Then ConsoleWrite("(" & $i & ") Purging '" & $aFiles[$i] & "'.." & @CRLF) _ArrayAdd($aSpecialFiles, $aFiles[$i]) _ArrayDelete($aFiles, $i) EndIf Next The code looks beautiful, however I get this one error constanstly: Array variable has incorrect number of subscripts or subscript dimension range exceeded.: If StringInStr($aFiles[$i], "#") Then If StringInStr(^ ERROR I've google'd for hours and rewritten my whole several times, just because of this error that constantly appears. I'm thinking it's probably some fundamentals that I can't get my head around, which is usually the case. Thanks in advance for any guidance, ~@Medallyon Edited February 17, 2016 by Medallyon Solved
Moderators Melba23 Posted February 17, 2016 Moderators Posted February 17, 2016 (edited) Medallyon, If you are deleting elements from an array, you must start at the bottom and work up - or, as you have discovered, you will try to read past the new end of the shortened array. So change the For line to: For $i = UBound($aFiles)-1 To 0 Step -1 M23 Edited February 17, 2016 by Melba23 Typo 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
Medallyon Posted February 17, 2016 Author Posted February 17, 2016 This works flawlessly. Thanks for really quick response. I'll definetely keep this in mind when working with arrays. ~@Medallyon
Moderators Melba23 Posted February 17, 2016 Moderators Posted February 17, 2016 Medallyon, Glad I could help. 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
iamtheky Posted February 17, 2016 Posted February 17, 2016 (edited) Doesnt that leave you with two of the exact same array, essentially _ArrayUnique with extra effort? Edited February 17, 2016 by iamtheky ,-. .--. ________ .-. .-. ,---. ,-. .-. .-. .-. |(| / /\ \ |\ /| |__ __||| | | || .-' | |/ / \ \_/ )/ (_) / /__\ \ |(\ / | )| | | `-' | | `-. | | / __ \ (_) | | | __ | (_)\/ | (_) | | .-. | | .-' | | \ |__| ) ( | | | | |)| | \ / | | | | | |)| | `--. | |) \ | | `-' |_| (_) | |\/| | `-' /( (_)/( __.' |((_)-' /(_| '-' '-' (__) (__) (_) (__)
Medallyon Posted February 17, 2016 Author Posted February 17, 2016 35 minutes ago, iamtheky said: Doesnt that leave you with two of the exact same array, essentially _ArrayUnique with extra effort? I'm not removing duplicates, I'm filtering out certain files. Checking if shortcuts exist.. Creating Arrays.. Purging Priority Entries from NormalEntry-Array.. (2) Purging 'Shortcuts\#Screenshot_3.jpg - Shortcut.lnk'.. (1) Purging 'Shortcuts\#Screenshot_2.jpg - Shortcut.lnk'.. (0) Purging 'Shortcuts\#12742690_1021536641253721_4360200797594934282_n.jpg - Shortcut.lnk'.. Launching Priority Files.. Launching 'Shortcuts\#Screenshot_3.jpg - Shortcut.lnk'.. Launching 'Shortcuts\#Screenshot_2.jpg - Shortcut.lnk'.. Launching 'Shortcuts\#12742690_1021536641253721_4360200797594934282_n.jpg - Shortcut.lnk'.. Launching Normal Files.. Launching 'Shortcuts\12742690_1021536641253721_4360200797594934282_n.jpg - Shortcut - Copy.lnk'.. Launching 'Shortcuts\CAsFVX8.gif - Shortcut - Copy.lnk'.. Launching 'Shortcuts\CAsFVX8.gif - Shortcut.lnk'.. Launching 'Shortcuts\rDS5T1b.gif - Shortcut - Copy.lnk'.. Launching 'Shortcuts\rDS5T1b.gif - Shortcut.lnk'.. Launching 'Shortcuts\Screenshot_2.jpg - Shortcut - Copy.lnk'.. Launching 'Shortcuts\Screenshot_3.jpg - Shortcut - Copy.lnk'.. Script executed successfully. My script works as it should.
iamtheky Posted February 17, 2016 Posted February 17, 2016 i see, I'd like to start a regexp battle now since you are done with the thread. Extracting matching data from an array, while being able to present the original without that data: #include <Array.au3> local $aArray = ["1" , "#2" , "#3" , "#4" , "5"] $aMatch = StringRegExp(_ArrayToString($aArray) , "(#.+?)\b" , 3) $aArray = stringsplit(stringreplace(StringRegExpReplace(_ArrayToString($aArray) , _ArrayToString($aMatch) , "|") , "||" , "") , "|" , 3) _ArrayDisplay($aMatch , "match") _ArrayDisplay($aArray , "leftover") ,-. .--. ________ .-. .-. ,---. ,-. .-. .-. .-. |(| / /\ \ |\ /| |__ __||| | | || .-' | |/ / \ \_/ )/ (_) / /__\ \ |(\ / | )| | | `-' | | `-. | | / __ \ (_) | | | __ | (_)\/ | (_) | | .-. | | .-' | | \ |__| ) ( | | | | |)| | \ / | | | | | |)| | `--. | |) \ | | `-' |_| (_) | |\/| | `-' /( (_)/( __.' |((_)-' /(_| '-' '-' (__) (__) (_) (__)
Medallyon Posted February 17, 2016 Author Posted February 17, 2016 2 hours ago, iamtheky said: I'd like to start a regexp battle now since you are done with the thread. I'm not so good with regexp yet, but nice snippet! Seems to cut out a lot of work, but I think I'll stick to my code until I can even start to comprehend what's going on in yours
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