Jump to content

[Solved] Trouble with Arrays


 Share

Recommended Posts

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 by Medallyon
Solved
Link to comment
Share on other sites

  • Moderators

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 by Melba23
Typo

Public_Domain.png.2d871819fcb9957cf44f4514551a2935.png 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 columns
ChooseFileFolder ---- Single and multiple selections from specified path treeview listing
Date_Time_Convert -- Easily convert date/time formats, including the language used
ExtMsgBox --------- A highly customisable replacement for MsgBox
GUIExtender -------- Extend and retract multiple sections within a GUI
GUIFrame ---------- Subdivide GUIs into many adjustable frames
GUIListViewEx ------- Insert, delete, move, drag, sort, edit and colour ListView items
GUITreeViewEx ------ Check/clear parent and child checkboxes in a TreeView
Marquee ----------- Scrolling tickertape GUIs
NoFocusLines ------- Remove the dotted focus lines from buttons, sliders, radios and checkboxes
Notify ------------- Small notifications on the edge of the display
Scrollbars ----------Automatically sized scrollbars with a single command
StringSize ---------- Automatically size controls to fit text
Toast -------------- Small GUIs which pop out of the notification area

 

Link to comment
Share on other sites

  • Moderators

Medallyon,

Glad I could help.

M23

Public_Domain.png.2d871819fcb9957cf44f4514551a2935.png 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 columns
ChooseFileFolder ---- Single and multiple selections from specified path treeview listing
Date_Time_Convert -- Easily convert date/time formats, including the language used
ExtMsgBox --------- A highly customisable replacement for MsgBox
GUIExtender -------- Extend and retract multiple sections within a GUI
GUIFrame ---------- Subdivide GUIs into many adjustable frames
GUIListViewEx ------- Insert, delete, move, drag, sort, edit and colour ListView items
GUITreeViewEx ------ Check/clear parent and child checkboxes in a TreeView
Marquee ----------- Scrolling tickertape GUIs
NoFocusLines ------- Remove the dotted focus lines from buttons, sliders, radios and checkboxes
Notify ------------- Small notifications on the edge of the display
Scrollbars ----------Automatically sized scrollbars with a single command
StringSize ---------- Automatically size controls to fit text
Toast -------------- Small GUIs which pop out of the notification area

 

Link to comment
Share on other sites

Doesnt that leave you with two of the exact same array, essentially _ArrayUnique with extra effort?

Edited by iamtheky

,-. .--. ________ .-. .-. ,---. ,-. .-. .-. .-.
|(| / /\ \ |\ /| |__ __||| | | || .-' | |/ / \ \_/ )/
(_) / /__\ \ |(\ / | )| | | `-' | | `-. | | / __ \ (_)
| | | __ | (_)\/ | (_) | | .-. | | .-' | | \ |__| ) (
| | | | |)| | \ / | | | | | |)| | `--. | |) \ | |
`-' |_| (_) | |\/| | `-' /( (_)/( __.' |((_)-' /(_|
'-' '-' (__) (__) (_) (__)

Link to comment
Share on other sites

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.

Link to comment
Share on other sites

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")

 

,-. .--. ________ .-. .-. ,---. ,-. .-. .-. .-.
|(| / /\ \ |\ /| |__ __||| | | || .-' | |/ / \ \_/ )/
(_) / /__\ \ |(\ / | )| | | `-' | | `-. | | / __ \ (_)
| | | __ | (_)\/ | (_) | | .-. | | .-' | | \ |__| ) (
| | | | |)| | \ / | | | | | |)| | `--. | |) \ | |
`-' |_| (_) | |\/| | `-' /( (_)/( __.' |((_)-' /(_|
'-' '-' (__) (__) (_) (__)

Link to comment
Share on other sites

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 :D

Link to comment
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
 Share

×
×
  • Create New...