Brobbl Posted April 26, 2013 Share Posted April 26, 2013 I am planning on rewriting one of my tools from using ini-files to using a database, and I want to add some features. I searched this and other forums about my following questions and read the help file, but I just found out what wouldn't work, not what I could do to get my problem solved =( So, I can add an array[2] into the "slots" of another array[n]: for $i = 0 to 4 array1[$i] = array2 next ...but I can't access the stored arrays directly. How can I get this solved? I always have different amounts of "array2"s and want to get a 2D array storing the number of elements in [0][0]. Thanks in advance, just post me some hints and I think I can figure this out myself... Link to comment Share on other sites More sharing options...
Moderators Melba23 Posted April 26, 2013 Moderators Share Posted April 26, 2013 Brobbl,As you have found out, storing arrays in another array is perfectly possible but not that practical if you need quick access to their content. Could you let us see some examples of exactly what sort of data and format you have for your array2 and what you are trying to achieve in the 2D array you mention (such as how the array2 data fits into it). It is always easier to suggest possible solutions with some concrete data to work on. 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...
water Posted April 26, 2013 Share Posted April 26, 2013 Array in Array is possible but not recommended. You can't access an element of an array in an array directly. You could use _ArrayToString for $Array2 (use a sensible delimiter) and then store this string in $Array1. If needed create an array again using StringSplit. My UDFs and Tutorials: Spoiler UDFs:Active Directory (NEW 2022-02-19 - Version 1.6.1.0) - Download - General Help & Support - Example Scripts - WikiExcelChart (2017-07-21 - Version 0.4.0.1) - Download - General Help & Support - Example ScriptsOutlookEX (2021-11-16 - Version 1.7.0.0) - Download - General Help & Support - Example Scripts - WikiOutlookEX_GUI (2021-04-13 - Version 1.4.0.0) - DownloadOutlook Tools (2019-07-22 - Version 0.6.0.0) - Download - General Help & Support - WikiPowerPoint (2021-08-31 - Version 1.5.0.0) - Download - General Help & Support - Example Scripts - WikiTask Scheduler (NEW 2022-07-28 - Version 1.6.0.1) - Download - General Help & Support - Wiki Standard UDFs:Excel - Example Scripts - WikiWord - Wiki Tutorials:ADO - WikiWebDriver - Wiki Link to comment Share on other sites More sharing options...
Brobbl Posted April 26, 2013 Author Share Posted April 26, 2013 (edited) Could you let us see some examples of exactly what sort of data and format you have for your array2 and what you are trying to achieve in the 2D array you mention (such as how the array2 data fits into it). It is always easier to suggest possible solutions with some concrete data to work on. I would share code if I had some, but I am planning how to solve my problem right now and didnt write any code yet. Right now I only have my database and I am querying the dependencies and the mode (install/uninstall). Select db.dependency, db.mode From db Where db.paket = 'test' Since a package can have multiple dependencies, I want to store them in an array and work through it afterwards. The data type is always string. EDIT: I have to mention, I'm using this sql funktion: Func _SQLQuery($oConn, $sQuery) If IsObj($oConn) Then Return $oConn.Execute($sQuery) Return SetError(1, 0, 0) EndFunc ;==>_SQLQuery Obviously it returns an object, which I write into a string which is split into an "array2" afterwards. While Not $result.EOF $string=$string & $result.Fields("collumn").value & "|" $result.MoveNext Wend array = stringsplit(string, "|", 1) Perhaps there are better solutions but I don't know them. Array in Array is possible but not recommended. You can't access an element of an array in an array directly. You could use _ArrayToString for $Array2 (use a sensible delimiter) and then store this string in $Array1. If needed create an array again using StringSplit. Thank you water, I'll have a look into this. Edited April 26, 2013 by Brobbl Link to comment Share on other sites More sharing options...
trancexx Posted April 26, 2013 Share Posted April 26, 2013 (edited) It's not true that array in array is not recommended. Who ever said that originally didn't know what he was talking about. The problem Brobbi shows is problem with unimplemented basic feature. Beta versions of AutoIt allow direct access by using parentheses, like this: Local $aInner[2] = ["Elem1", 2] Local $aOuter[2] = ["Q", $aInner] $sElem = ($aOuter[1])[0] ; this is string "Elem1" ;... Edited April 26, 2013 by trancexx ♡♡♡ . eMyvnE Link to comment Share on other sites More sharing options...
Brobbl Posted April 26, 2013 Author Share Posted April 26, 2013 (edited) It's not true that array in array is not recommended. Who ever said that originally didn't know what he was talking about. The problem Brobbi shows is problem with unimplemented basic feature. Beta versions of AutoIt allow direct access by using parentheses, like this: Local $aInner[2] = ["Elem1", 2] Local $aOuter[2] = ["Q", $aInner] $sElem = ($aOuter[1])[0] ; this is string "Elem1" ;... Yeah, that's what I was looking for, but it won't work.... which is okay for me, I just need a workaround Edited April 26, 2013 by Brobbl Link to comment Share on other sites More sharing options...
trancexx Posted April 26, 2013 Share Posted April 26, 2013 (edited) ^^ workaround is obvious. Just think for a second. Edited April 26, 2013 by trancexx ♡♡♡ . eMyvnE Link to comment Share on other sites More sharing options...
JohnOne Posted April 26, 2013 Share Posted April 26, 2013 That syntax is a great addition/improvement to AutoIt, I hope it makes it into release version. AutoIt Absolute Beginners Require a serial Pause Script Video Tutorials by Morthawt ipify Monkey's are, like, natures humans. Link to comment Share on other sites More sharing options...
Brobbl Posted April 26, 2013 Author Share Posted April 26, 2013 ^^ workaround is obvious. Just think for a second.huh. I don't see it. Any hints? Link to comment Share on other sites More sharing options...
JohnOne Posted April 26, 2013 Share Posted April 26, 2013 $temparray = $arayofarray[x] AutoIt Absolute Beginners Require a serial Pause Script Video Tutorials by Morthawt ipify Monkey's are, like, natures humans. Link to comment Share on other sites More sharing options...
Brobbl Posted April 26, 2013 Author Share Posted April 26, 2013 (edited) $temparray = $arayofarray[x] Would this work? I mean, if I have an array of arrays and put it into another variable, its still an array of arrays and I cant access the values in it, right? EDIT: The problem is that i never really got into work with 2D arrays very much, I used some INI funktion which returned 2D arrays, but this is the first time i'm trying to create one myself. Edited April 26, 2013 by Brobbl Link to comment Share on other sites More sharing options...
Brobbl Posted April 26, 2013 Author Share Posted April 26, 2013 (edited) I think i got it... untested, but I think tested, did some changes and it's okay:_arraydisplay(_GetReq("testpackage")) Exit Func _GetReq($Package) $SQL = _SQLConnect($SQL_servername,$SQL_serverdomain,$SQL_authmode,$SQL_username,$SQL_userpass) $query = "Select db.dependency, db.mode From dbWhere db.paket = '" & $Package & "'" $result = _SQLQuery($SQL,$query) $dependencies = "" While Not $result.EOF $dependencies=$dependencies & $result.Fields("dependency").value & "|" & $result.Fields("mode").value & "||" $result.MoveNext Wend $dependencies = StringLeft($dependencies, StringLen($dependencies) - 2) $temparray1 = StringSplit($dependencies, "||", 1) Dim $returnarray[$temparray1[0] + 1][2] $returnarray[0][0] = $temparray1[0] For $count = 1 To $temparray1[0] $temparray2 = StringSplit($temparray1[$count], "|", 3) $returnarray[$count][0] = $temparray2[0] $returnarray[$count][1] = $temparray2[1] Next _SQLDisconnect($SQL) Return $returnarray EndFuncNow I'm looking in what to do if there are no dependecies returned from the database, but I think this is easy =)Thank you all! Edited April 29, 2013 by Brobbl 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