tes5884 Posted August 10, 2012 Posted August 10, 2012 Hi Guys,I'm having a hard time wrapping my brain around Arrays. Specifically, multi-dimensional, as well as dimension and entry limits.'I already read the AutoIt docs page a couple of times.Anyone have a better explanation and/or links?Thanks! www.tspitz.com
water Posted August 10, 2012 Posted August 10, 2012 The wiki has a very good tutorial describing how arrays work. My UDFs and Tutorials: Spoiler UDFs: Active Directory (NEW 2024-07-28 - Version 1.6.3.0) - Download - General Help & Support - Example Scripts - Wiki ExcelChart (2017-07-21 - Version 0.4.0.1) - Download - General Help & Support - Example Scripts OutlookEX (2021-11-16 - Version 1.7.0.0) - Download - General Help & Support - Example Scripts - Wiki OutlookEX_GUI (2021-04-13 - Version 1.4.0.0) - Download Outlook Tools (2019-07-22 - Version 0.6.0.0) - Download - General Help & Support - Wiki PowerPoint (2021-08-31 - Version 1.5.0.0) - Download - General Help & Support - Example Scripts - Wiki Task Scheduler (2022-07-28 - Version 1.6.0.1) - Download - General Help & Support - Wiki Standard UDFs: Excel - Example Scripts - Wiki Word - Wiki Tutorials: ADO - Wiki WebDriver - Wiki
Moderators Melba23 Posted August 10, 2012 Moderators Posted August 10, 2012 tes5884,I recommend the Arrays tutorial in the Wiki. Please post again if you still have questions. 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
tes5884 Posted August 10, 2012 Author Posted August 10, 2012 Thank you both. I didn't notice that one. www.tspitz.com
Mechaflash Posted August 10, 2012 Posted August 10, 2012 x axis VS x + y axis VS x + y + z axis Remember in geometry when you had to calculate distances in a 3 dimensional object? you had your x,y, and z axis. Same idea. x = rows y = columns z = depth Local $array[1] ; single dimension array with 1 element Local $2D[1][2] ; two dimensional array with 2 indexes and 1 element in each index. ; i.e. $2D[0][0], $2D[0][1] Local $3D[1][2][2] ; three dimensional array with 2 planes, 2 indexes on each plane, and 1 elements in each index ; i.e. $3D[0][0][0], $3D[0][1][0], $3D[0][0][1], $3D[0][1][1] Spoiler “Hello, ladies, look at your man, now back to me, now back at your man, now back to me. Sadly, he isn’t me, but if he stopped using ladies scented body wash and switched to Old Spice, he could smell like he’s me. Look down, back up, where are you? You’re on a boat with the man your man could smell like. What’s in your hand, back at me. I have it, it’s an oyster with two tickets to that thing you love. Look again, the tickets are now diamonds. Anything is possible when your man smells like Old Spice and not a lady. I’m on a horse.”
Spiff59 Posted August 10, 2012 Posted August 10, 2012 (edited) Looking at it one way, the number of dimensions is almost meaningless. It's just another way of labelling the same variables or "mailboxes" that you're creating. $aArray[24] is the same thing as $aArray[3][8] (3 x 8 = 24) which is the same thing as $aArray[3][2][4] (3 x 2 x 4 = 24). They are all just a table of 24 variables. If your 3-story apartment building has 24 units and you just want to store all the apartment numbers then use $aArray[24] (apt#). If you want to organize them by floor you could create the same 24 boxes but reference them as $aArray[3][8] (floor/apt#) If you had a reason to keep the apartments on the north side of the building separate from those on the south side, then you could setup your 24 mailboxes as $aArray[3][2][4] (floor/north-south/apt#) When you reference the 17th element of the 1-dimension array; $aArray[17], it is the same thing internally as referencing element $aArray[2][0][1] of the 3-dimension array (2 x 8 + 0 x 4 + 1 x 1 = 17) Hope I haven't made things worse Edit: You could simulate any number of dimensions using a 1-dimension array and a few lines of code. This is, at least conceptually, the same thing that goes on internally when you decide to split your array into different dimensions: Global $aApartments[24] = ["1A","1B","1C","1D","1E","1F","1G","1H","2A","2B","2C","2D","2E","2F","2G","2H","3A","3B","3C","3D","3E","3F","3G","3H"] MsgBox(0, "1-Dimension", Dimension_Simulator("24", "17")) ; get element [17] of $aArray[24] MsgBox(0, "2-Dimension", Dimension_Simulator("3*8", "2|1")) ; get element [2][1] of $aArray[3][8] MsgBox(0, "3-Dimension", Dimension_Simulator("3*2*4", "2|0|1")) ; get element [2][0][1] of $aArray[3][2][4] Func Dimension_Simulator($structure, $element) Local $aStructure = StringSplit($structure, "*") Local $iSize = Execute($structure) ; total elements Local $aElement = StringSplit($element, "|") Local $iTarget For $x = 1 to $aElement[0] ; calculate element offset $iTarget += $aElement[$x] * ($iSize / $aStructure[$x]) $iSize /= $aStructure[$x] Next Return $aApartments[$iTarget] EndFunc Edited August 11, 2012 by Spiff59 tes5884 1
tes5884 Posted August 13, 2012 Author Posted August 13, 2012 Alright, I have lot's of homework now I'll keep you guys posted. Thanks!!! www.tspitz.com
tes5884 Posted August 13, 2012 Author Posted August 13, 2012 (edited) Question; if I have a variable toast = $var[2][2] Does that mean I can have values like the following; $var[0][0] $var[0][1] $var[0][2] $var[1][0] $var[1][1] $var[1][2] $var[2][0] $var[2][1] $var[2][2] or am I missing something? Thanks!!! Edited August 13, 2012 by tes5884 www.tspitz.com
water Posted August 13, 2012 Posted August 13, 2012 Your list of array elements is correct. Array elements always start with an index of 0. If you have an $array[7] the index goes from 0 to 6 (or "UBound($array, 1) - 1)". My UDFs and Tutorials: Spoiler UDFs: Active Directory (NEW 2024-07-28 - Version 1.6.3.0) - Download - General Help & Support - Example Scripts - Wiki ExcelChart (2017-07-21 - Version 0.4.0.1) - Download - General Help & Support - Example Scripts OutlookEX (2021-11-16 - Version 1.7.0.0) - Download - General Help & Support - Example Scripts - Wiki OutlookEX_GUI (2021-04-13 - Version 1.4.0.0) - Download Outlook Tools (2019-07-22 - Version 0.6.0.0) - Download - General Help & Support - Wiki PowerPoint (2021-08-31 - Version 1.5.0.0) - Download - General Help & Support - Example Scripts - Wiki Task Scheduler (2022-07-28 - Version 1.6.0.1) - Download - General Help & Support - Wiki Standard UDFs: Excel - Example Scripts - Wiki Word - Wiki Tutorials: ADO - Wiki WebDriver - Wiki
tes5884 Posted August 13, 2012 Author Posted August 13, 2012 Your list of array elements is correct. Array elements always start with an index of 0. If you have an $array[7] the index goes from 0 to 6 (or "UBound($array, 1) - 1)". Does index 0 hold a comparable value to any other number? In other words, does the first index (0), point to an element just like any other index ? or is it any different. www.tspitz.com
water Posted August 13, 2012 Posted August 13, 2012 Depends on how the array was created. It's often referred to as "zero-based" or "one-based". Means the data starts in row 0 or row 1. If it starts in row 1 then row 0 contains the number of rows. If it is a two dimensional array then $array[0][0] contains the number of rows and $array[0][1] contains the number of columns. Check function StringSplit as an example. You can decide if the function returns a zero- or one-based array. tes5884 1 My UDFs and Tutorials: Spoiler UDFs: Active Directory (NEW 2024-07-28 - Version 1.6.3.0) - Download - General Help & Support - Example Scripts - Wiki ExcelChart (2017-07-21 - Version 0.4.0.1) - Download - General Help & Support - Example Scripts OutlookEX (2021-11-16 - Version 1.7.0.0) - Download - General Help & Support - Example Scripts - Wiki OutlookEX_GUI (2021-04-13 - Version 1.4.0.0) - Download Outlook Tools (2019-07-22 - Version 0.6.0.0) - Download - General Help & Support - Wiki PowerPoint (2021-08-31 - Version 1.5.0.0) - Download - General Help & Support - Example Scripts - Wiki Task Scheduler (2022-07-28 - Version 1.6.0.1) - Download - General Help & Support - Wiki Standard UDFs: Excel - Example Scripts - Wiki Word - Wiki Tutorials: ADO - Wiki WebDriver - Wiki
Mechaflash Posted August 13, 2012 Posted August 13, 2012 It's just like any other index. Many functions that return an array (_FileListToArray()) use the 0 index to hold specific information. In the case of _FileListToArray(), the 0 index holds the total file/folder count. For these functions you can iterate over them as follows: For $i = 1 To $array[0] msgbox(0,"",$array[$i]) Next For 0-based arrays, you can iterate over them as: For $element in $array msgbox(0,"",$element) Next Spoiler “Hello, ladies, look at your man, now back to me, now back at your man, now back to me. Sadly, he isn’t me, but if he stopped using ladies scented body wash and switched to Old Spice, he could smell like he’s me. Look down, back up, where are you? You’re on a boat with the man your man could smell like. What’s in your hand, back at me. I have it, it’s an oyster with two tickets to that thing you love. Look again, the tickets are now diamonds. Anything is possible when your man smells like Old Spice and not a lady. I’m on a horse.”
tes5884 Posted August 13, 2012 Author Posted August 13, 2012 (edited) Got it. Thanks water and mechaflash213. Edited August 13, 2012 by tes5884 www.tspitz.com
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