DickG Posted August 16, 2008 Share Posted August 16, 2008 Is it possible to specify column names in a multi-dimensional array? For example, I am displaying an array that has 7 columns, each of which is shown as "Col(0)", "Col(1)", etc. at the top. Is it possible to change it to use column names like "Date," "Time", etc.? Also, is it possible to set a column width? One of the columns is too narrow for the text, and I'd like to set the width to the widest cell. Any of this possible? Link to comment Share on other sites More sharing options...
computergroove Posted August 16, 2008 Share Posted August 16, 2008 Can we see your code up to this point? Get Scite to add a popup when you use a 3rd party UDF -> http://www.autoitscript.com/autoit3/scite/docs/SciTE4AutoIt3/user-calltip-manager.html Link to comment Share on other sites More sharing options...
PsaltyDS Posted August 16, 2008 Share Posted August 16, 2008 (edited) Is it possible to specify column names in a multi-dimensional array? For example, I am displaying an array that has 7 columns, each of which is shown as "Col(0)", "Col(1)", etc. at the top. Is it possible to change it to use column names like "Date," "Time", etc.? Also, is it possible to set a column width? One of the columns is too narrow for the text, and I'd like to set the width to the widest cell. Any of this possible? An array is a type of variable stored in AutoIt's process memory. AutoIt arrays can be multidimensional, but "column width" and "column name" have no meaning in memory storage. All array indexes in AutoIt are integers, for example $avArray[2][3][4] for a 3D array. A ListView control has rows and columns, and the columns can have set width and names (header text). See the help file under GUICtrlCreateListView(), GUICtrlCreateListViewItem(), and the GuiListView.au3 UDF commands like _GuiCtrlListView_SetColumn(). Edited August 16, 2008 by PsaltyDS Valuater's AutoIt 1-2-3, Class... Is now in Session!For those who want somebody to write the script for them: RentACoder"Any technology distinguishable from magic is insufficiently advanced." -- Geek's corollary to Clarke's law Link to comment Share on other sites More sharing options...
DickG Posted August 17, 2008 Author Share Posted August 17, 2008 Yes, I know an array is just a list of variables, but _ArrayDisplay() shows generic columns "names" and I was hoping there was a way of giving those columns names. So I was referring to the display of the array, not the array variables themselves. I started out using a ListView, but realized that using an array along with _ArrayDisplay() was so much easier. But now I realize the limitation of this approach. Maybe I'll look into combining both: an array, then feeding that to a ListView where I can name the columns for display. Thanks much for the advise, PSaltyDS. An array is a type of variable stored in AutoIt's process memory. AutoIt arrays can be multidimensional, but "column width" and "column name" have no meaning in memory storage. All array indexes in AutoIt are integers, for example $avArray[2][3][4] for a 3D array. A ListView control has rows and columns, and the columns can have set width and names (header text). See the help file under GUICtrlCreateListView(), GUICtrlCreateListViewItem(), and the GuiListView.au3 UDF commands like _GuiCtrlListView_SetColumn(). Link to comment Share on other sites More sharing options...
PsaltyDS Posted August 17, 2008 Share Posted August 17, 2008 Yes, I know an array is just a list of variables, but _ArrayDisplay() shows generic columns "names" and I was hoping there was a way of giving those columns names. So I was referring to the display of the array, not the array variables themselves.I started out using a ListView, but realized that using an array along with _ArrayDisplay() was so much easier. But now I realize the limitation of this approach.Maybe I'll look into combining both: an array, then feeding that to a ListView where I can name the columns for display.Thanks much for the advise, PSaltyDS.I see now what you meant. Note that the code for _ArrayDisplay() is in the Array.au3 UDF, which can be opened up in SciTE, studied, and modified like any other script. That would give you a place to start from, anyway. Valuater's AutoIt 1-2-3, Class... Is now in Session!For those who want somebody to write the script for them: RentACoder"Any technology distinguishable from magic is insufficiently advanced." -- Geek's corollary to Clarke's law Link to comment Share on other sites More sharing options...
DickG Posted August 17, 2008 Author Share Posted August 17, 2008 Ah, excellent! I was not aware of that! I was able to add column names by customizing Array.au3! I saved a copy of the original Array.au3 as Array_Custom.au3, then found where it adds "Col ($i)" to the header. I then added my own code to cycle through and give each column a name. Now _ArrayDisplay() shows my column names! I changed the original code in Array.au3 (starting at line 208) from this: ;; make LV header================================================================== For $i = 1 To UBound($ar_2DArray, 2) $sTempHeader &= $GUIDataSeparatorChar & 'Col ' & $i - 1 Next StringReplace($sTempHeader, $GUIDataSeparatorChar, "<") If @extended > 252 Then $i_Pos = StringInStr($sTempHeader, $GUIDataSeparatorChar, 0, 252) $sTempHeader = StringLeft($sTempHeader, $i_Pos - 1) EndIf $s_NotDoneLine = StringReplace($sTempHeader, "Col", "ND")oÝ÷ Ù:-+ºÚ"µÍÎÈXZÙHXYOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOBÜ ÌÍÚHHHÈPÝ[ ÌÍØÌ^KBTÙ[XÝBPØÙH ÌÍÚHHBBBIÌÍÐÛÛ[YHH ][ÝÑ]I][ÝÂBPØÙH ÌÍÚHHBBIÌÍÐÛÛ[YHH ][ÝÕ[YI][ÝÂBPØÙH ÌÍÚHHÂBBIÌÍÐÛÛ[YHH ][ÝÔÜYY ][ÝÂBPØÙH ÌÍÚHH BBIÌÍÐÛÛ[YHH ][ÝÒT ][ÝÂBPØÙH ÌÍÚHH BBBIÌÍÐÛÛ[YHH ][ÝÓ][ÞI][ÝÂBPØÙH ÌÍÚHH BBIÌÍÐÛÛ[YHH ][ÝÓÜÝXÚÙ]É][ÝÂBPØÙH ÌÍÚHH ÂBBIÌÍÐÛÛ[YHH ][ÝÓÝI][ÝÂBPØÙH[ÙBBBIÌÍÐÛÛ[YHH ][ÝÐÛÛ ][ÝÂQ[Ù[XÝIÌÍÜÕ[XY [ÏH ÌÍÑÕRQ]TÙ]ÜÚ [È ÌÍÐÛÛ[YB^ But then I discovered that if I specify "#include <Array_Custom1.au3> instead of "#include <Array.au3>", my script throws an error that says the array code is already there and points to Array.au3. So it looks like some other #include file is calling Array.au3 anyway. I am including these files: #include <Constants.au3> #include <GuiConstants.au3> #include <GuiConstantsEx.au3> #include <GuiListView.au3> #include <GuiEdit.au3> #include <IE.au3> #include <INet.au3> #include <Date.au3> #include <File.au3> #include <Array.au3> Is there a better way to modify Array.au3 without creating errors? For now, I made a copy of Array.au3 as MyArray.au3, modified MyArray.au3 to set my column names, then I rename Array.au3 to Array.txt and rename MyArray.au3 to Array.au3 before I run my script. I reverse that when I'm done. But there must be better way. Thanks much for turning me on to this!!!!!!! I see now what you meant. Note that the code for _ArrayDisplay() is in the Array.au3 UDF, which can be opened up in SciTE, studied, and modified like any other script. That would give you a place to start from, anyway. Link to comment Share on other sites More sharing options...
PsaltyDS Posted August 17, 2008 Share Posted August 17, 2008 I think it would have bee easier to leave Array.au3 intact and just put the _ArrayDisplayCustom() function in Array_Custom.au3. Then you can use either the original _ArrayDisplay() or your own _ArrayDisplayCustom() as required. Valuater's AutoIt 1-2-3, Class... Is now in Session!For those who want somebody to write the script for them: RentACoder"Any technology distinguishable from magic is insufficiently advanced." -- Geek's corollary to Clarke's law Link to comment Share on other sites More sharing options...
DickG Posted August 18, 2008 Author Share Posted August 18, 2008 OK, I tried this, and it works great!Man, thanks for pointing me in the right direction. I was not aware of how to do this.So, for the benefit of those who might read this later, wondering how to do something similar, here is what I did:o Open Array.au3 and save as Array_Custom.au3.o Open Array_Custom.au3 for editing.o Delete all functions except _ArrayDisplay().o Rename _ArrayDisplay() to _ArrayDisplayCustom().o Customize the function with your own code.o Save and closeIn the script that will use the custom function:o Add #Include <Array_Custom.au3>o OK to keep #Include <Array.au3> as well.o Use _ArrayDisplayCustom() instead of _ArrayDisplay where you want to use the custom function.To add column names for a specific script, see earlier post for before/after code.Thanks very much for your help, PSaltyDS. There is so much to learn, and this really helped me.DickI think it would have bee easier to leave Array.au3 intact and just put the _ArrayDisplayCustom() function in Array_Custom.au3. Then you can use either the original _ArrayDisplay() or your own _ArrayDisplayCustom() as required. MrCheese 1 Link to comment Share on other sites More sharing options...
MrCheese Posted January 11, 2018 Share Posted January 11, 2018 awesome job! this thread was great! Thanks for the problem and solution. Link to comment Share on other sites More sharing options...
jchd Posted January 11, 2018 Share Posted January 11, 2018 Once There Was a Time - Ten Years After, 1971. This wonderful site allows debugging and testing regular expressions (many flavors available). An absolute must have in your bookmarks.Another excellent RegExp tutorial. Don't forget downloading your copy of up-to-date pcretest.exe and pcregrep.exe hereRegExp tutorial: enough to get startedPCRE v8.33 regexp documentation latest available release and currently implemented in AutoIt beta. SQLitespeed is another feature-rich premier SQLite manager (includes import/export). Well worth a try.SQLite Expert (freeware Personal Edition or payware Pro version) is a very useful SQLite database manager.An excellent eBook covering almost every aspect of SQLite3: a must-read for anyone doing serious work.SQL tutorial (covers "generic" SQL, but most of it applies to SQLite as well)A work-in-progress SQLite3 tutorial. Don't miss other LxyzTHW pages!SQLite official website with full documentation (may be newer than the SQLite library that comes standard with AutoIt) Link to comment Share on other sites More sharing options...
MrCheese Posted January 11, 2018 Share Posted January 11, 2018 kinda funny 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