c.haslam Posted June 14, 2015 Share Posted June 14, 2015 (edited) I want to sort on columns 0 to 3.The time-honored way of doing this is to sort on the most minor column, then on the more major columns (here 3,2,1, then 0):#include <Array.au3> Local $ar[200][5] For $i = 0 to 199 for $j = 0 to 4 $ar[$i][$j] = Chr(Random(97,122,1))&Chr(Random(97,122,1))&Chr(Random(97,122,1)) Next Next _ArrayDisplay($ar, "$ar BEFORE _ArraySort()") For $i = 3 to 0 step -1 if not _ArraySort($ar,0,0,0,$i) Then MsgBox('','error',@error) EndIf _ArrayDisplay($ar, "$ar AFTER _ArraySort() ascending column "&$i) Next(Here, I don't care about column 4.)But, as you can see, this progressive sort method doesn't work with _ArraySort(): it seems to sort only the values in the subject column, not to move the whole row based on values in the sort column.Thoughts? Edited June 14, 2015 by c.haslam Spoiler CDebug Dumps values of variables including arrays and DLL structs, to a GUI, to the Console, and to the Clipboard Link to comment Share on other sites More sharing options...
water Posted June 14, 2015 Share Posted June 14, 2015 IIRC there are functions available on the forum so sort an array on multiple columns. 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 Link to comment Share on other sites More sharing options...
Moderators Melba23 Posted June 14, 2015 Moderators Share Posted June 14, 2015 c.haslam,This thread is my contribution to the oeuvre.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 June 14, 2015 Share Posted June 14, 2015 Ah, I knew it was a function you had written . Unfortunately I couldn't find it in your signature and the search funcion of the new forum is ..... 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 Link to comment Share on other sites More sharing options...
Moderators Melba23 Posted June 14, 2015 Moderators Share Posted June 14, 2015 water,the search funcion of the new forum is .....It took me a couple of tries - and I knew the name of the function!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 June 14, 2015 Share Posted June 14, 2015 I hope the forum will soon get a better search function. Now it is horrible - to say the least 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 Link to comment Share on other sites More sharing options...
Moderators Melba23 Posted June 14, 2015 Moderators Share Posted June 14, 2015 water,My wish is a simpler subset of yours: "I hope the forum will soon get [...] better [...]"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...
jchd Posted June 14, 2015 Share Posted June 14, 2015 I want to sort on columns 0 to 3.The time-honored way of doing this is to sort on the most minor column, then on the more major columns (here 3,2,1, then 0)No, the normal way is to sort on the major criterion (here column 0), on equality sort on column 1, on equality sort on column 2 and on equality on column 3.Doing things in the opposite order requires a stable sort and is three times slower the way you think of it. The basic on-place qsort implemented in many UDFs is not stable. 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...
c.haslam Posted June 15, 2015 Author Share Posted June 15, 2015 Thank you all.jchd: Please tell me more about "equality sort" and "stable sort". Spoiler CDebug Dumps values of variables including arrays and DLL structs, to a GUI, to the Console, and to the Clipboard Link to comment Share on other sites More sharing options...
jchd Posted June 15, 2015 Share Posted June 15, 2015 I meant: "on equality of key level N, sort on key level N+1"It is the way you collate strings like names: first collate on the first character and on equality, collate on the second one, etc.Strings representing integral numbers require you sort on length first, then on the string content.A stable sort doesn't change the order of equal keys in the input. 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...
c.haslam Posted June 15, 2015 Author Share Posted June 15, 2015 Thank you Spoiler CDebug Dumps values of variables including arrays and DLL structs, to a GUI, to the Console, and to the Clipboard Link to comment Share on other sites More sharing options...
Gianni Posted June 15, 2015 Share Posted June 15, 2015 (edited) to simplify a bit your life, you could use sql against your 2d array so to get your wanted result using an SQL query and leave the SQLite engine will work for you.You need to download the ArraySQL udf from this post ( https://www.autoitscript.com/forum/topic/166536-manage-arrays-by-means-of-sql/?do=findComment&comment=1234441 ), and then use something like this for example:#include <Array.au3> #include <ArraySQL.au3> ; <-- download this from following post: ; https://www.autoitscript.com/forum/topic/166536-manage-arrays-by-means-of-sql/?do=findComment&comment=1234441 Local $ar[200][5] For $i = 0 To 199 For $j = 0 To 4 ; Short random data to only one char so to better see the logic of the result. $ar[$i][$j] = Chr(Random(97, 122, 1)) ; &Chr(Random(97,122,1))&Chr(Random(97,122,1)) Next Next _ArrayDisplay($ar, "$ar BEFORE _ArraySort()") #cs For $i = 3 to 0 step -1 if not _ArraySort($ar,0,0,0,$i) Then MsgBox('','error',@error) EndIf _ArrayDisplay($ar, "$ar AFTER _ArraySort() ascending column "&$i) Next #ce ; returns all rows ordered first by column3 then by Column2, column1 and Column0) $sQuery = "SELECT * FROM array ORDER BY column3,column2,column1,column0;" $aResult = _ArraySQL($ar, $sQuery) If Not @error Then _ArrayDisplay($aResult, "Ordered by column3,column2,column1,column0") Else MsgBox(0, "error", $g__sSQLiteError) EndIf Edited June 15, 2015 by Chimp pixelsearch 1 Chimp small minds discuss people average minds discuss events great minds discuss ideas.... and use AutoIt.... Link to comment Share on other sites More sharing options...
c.haslam Posted June 15, 2015 Author Share Posted June 15, 2015 Thanks, Chimp. I was wondering how to use SQLite to do the job. Spoiler CDebug Dumps values of variables including arrays and DLL structs, to a GUI, to the Console, and to the Clipboard Link to comment Share on other sites More sharing options...
jchd Posted June 15, 2015 Share Posted June 15, 2015 As an aside and while I'm a very very big big big fan of SQLite I'd say that going this way should be kept for cases where the volume of data is significant, or when the sorting condition(s) is/are non trivial (or diverse: col7 ASC then (col3 & col14) DESC then upper(col5) ASC), or when there is a need to finally store the data on disk. For the last point, using the SQLite backup UDF is recommended (search will help, when/if it works). 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...
LarsJ Posted June 16, 2015 Share Posted June 16, 2015 (edited) Another way to sort a 2D array by multiple columns is binary sorting based on an index. That is, the row numbers are inserted in the index at positions corresponding to the sorting order. The array itself is not affected by the sorting.expandcollapse popupFunc SortArray( ByRef $aItems, $pIndex, $tIndex, $aCmps ) Local $iCmps = UBound( $aCmps ), $c, $r, $v[$iCmps] Local $lo, $hi, $mi For $i = 0 To UBound( $aItems ) - 1 For $j = 0 To $iCmps - 1 $v[$j] = $aItems[$i][$aCmps[$j][0]] ; Values Next $lo = 0 $hi = $i - 1 While $lo <= $hi ; Binary search $r = 0 ; Compare result (-1,0,1) $j = 0 ; Index in $aCmps array $mi = Int( ( $lo + $hi ) / 2 ) While Not $r And $j < $iCmps ; This While-loop handles sorting by multiple $c = $aCmps[$j][0] ; Column ; columns. Column values of the two rows are Switch $aCmps[$j][1] ; Number/string ; compared until a difference is found. Case 0 ; Compare column values as numbers. The following line is an implementation of the spaceship or three-way comparison operator for numbers like StringCompare is for strings. $r = ( $v[$j] < $aItems[DllStructGetData($tIndex,1,$mi+1)][$c] ? -1 : $v[$j] = $aItems[DllStructGetData($tIndex,1,$mi+1)][$c] ? 0 : 1 ) * $aCmps[$j][2] ; * $iCmpAsc Case 1 ; Compare column values as strings. StringCompare is a spaceship or three-way comparison operator for strings. $r = StringCompare( $v[$j], $aItems[DllStructGetData($tIndex,1,$mi+1)][$c] ) * $aCmps[$j][2] ; * $iCmpAsc EndSwitch $j += 1 WEnd Switch $r Case -1 $hi = $mi - 1 Case 1 $lo = $mi + 1 Case 0 ; Equal ExitLoop EndSwitch WEnd If $i > $mi Then _ ; Make space for the row number in index DllCall( $hKernel32Dll, "none", "RtlMoveMemory", "struct*", $pIndex+($mi+1)*4, "struct*", $pIndex+$mi*4, "ulong_ptr", ($i-$mi)*4 ) DllStructSetData( $tIndex, 1, $i, $mi+1+($lo=$mi+1) ) ; Insert row number $i at position $mi+1+($lo=$mi+1) in index Next EndFuncExample:expandcollapse popup#include <Array.au3> Opt( "MustDeclareVars", 1 ) Global Const $hKernel32Dll = DllOpen( "kernel32.dll" ) Example( 1000, 3 ) Func Example( $iRows, $iCols ) Local $aItems[$iRows][$iCols] ; Fill array FillArray( $aItems ) _ArrayDisplay( $aItems, "Unsorted" ) ; Sort array Local $tIndex = DllStructCreate( "uint[" & $iRows & "]" ) Local $pIndex = DllStructGetPtr( $tIndex ) Local $aCmps[3][3] = [ _ [ 0, 1, +1 ], _ ; Col 0: Compared as strings, asc [ 1, 0, +1 ], _ ; Col 1: Compared as numbers, asc [ 2, 0, +1 ] ] ; Col 2: Compared as numbers, asc SortArray( $aItems, $pIndex, $tIndex, $aCmps ) ; Display rows Local $iRows2 = $iRows, $j Local $aItems2[$iRows2][$iCols] For $i = 0 To $iRows2 - 1 $j = DllStructGetData($tIndex,1,$i+1) For $k = 0 To $iCols - 1 $aItems2[$i][$k] = $aItems[$j][$k] Next Next _ArrayDisplay( $aItems2, "Sorted" ) EndFunc DllClose( $hKernel32Dll ) Func FillArray( ByRef $aItems ) Local $aLetters[26] = [ 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', _ 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z' ] Local $s, $t, $iRows = UBound( $aItems ) For $i = 0 To $iRows - 1 $s = $aLetters[Random(0,25,1)] For $j = 1 To 9 $s &= $aLetters[Random(0,25,1)] Next $aItems[$i][0] = $s ; String $aItems[$i][1] = Random( 0, $iRows - 1, 1 ) ; Integer $aItems[$i][2] = Random( 0, $iRows - 1, 1 ) + Round( Random(), 4 ) ; Float ; Duplicate strings For $j = 1 To Random(0,2,1) If $i = $iRows - 1 Then ExitLoop $i += 1 $aItems[$i][0] = $s ; String $aItems[$i][1] = Random( 0, $iRows - 1, 1 ) ; Integer $aItems[$i][2] = Random( 0, $iRows - 1, 1 ) + Round( Random(), 4 ) ; Float $t = $aItems[$i][1] ; Duplicate strings and integers For $m = 1 To Random(0,2,1) If $i = $iRows - 1 Then ExitLoop $i += 1 $aItems[$i][0] = $s ; String $aItems[$i][1] = $t ; Integer $aItems[$i][2] = Random( 0, $iRows - 1, 1 ) + Round( Random(), 4 ) ; Float Next Next Next EndFunc Func SortArray( ByRef $aItems, $pIndex, $tIndex, $aCmps ) Local $iCmps = UBound( $aCmps ), $c, $r, $v[$iCmps] Local $lo, $hi, $mi For $i = 0 To UBound( $aItems ) - 1 For $j = 0 To $iCmps - 1 $v[$j] = $aItems[$i][$aCmps[$j][0]] ; Values Next $lo = 0 $hi = $i - 1 While $lo <= $hi ; Binary search $r = 0 ; Compare result (-1,0,1) $j = 0 ; Index in $aCmps array $mi = Int( ( $lo + $hi ) / 2 ) While Not $r And $j < $iCmps ; This While-loop handles sorting by multiple $c = $aCmps[$j][0] ; Column ; columns. Column values of the two rows are Switch $aCmps[$j][1] ; Number/string ; compared until a difference is found. Case 0 ; Compare column values as numbers. The following line is an implementation of the spaceship or three-way comparison operator for numbers like StringCompare is for strings. $r = ( $v[$j] < $aItems[DllStructGetData($tIndex,1,$mi+1)][$c] ? -1 : $v[$j] = $aItems[DllStructGetData($tIndex,1,$mi+1)][$c] ? 0 : 1 ) * $aCmps[$j][2] ; * $iCmpAsc Case 1 ; Compare column values as strings. StringCompare is a spaceship or three-way comparison operator for strings. $r = StringCompare( $v[$j], $aItems[DllStructGetData($tIndex,1,$mi+1)][$c] ) * $aCmps[$j][2] ; * $iCmpAsc EndSwitch $j += 1 WEnd Switch $r Case -1 $hi = $mi - 1 Case 1 $lo = $mi + 1 Case 0 ; Equal ExitLoop EndSwitch WEnd If $i > $mi Then _ ; Make space for the row number in index DllCall( $hKernel32Dll, "none", "RtlMoveMemory", "struct*", $pIndex+($mi+1)*4, "struct*", $pIndex+$mi*4, "ulong_ptr", ($i-$mi)*4 ) DllStructSetData( $tIndex, 1, $i, $mi+1+($lo=$mi+1) ) ; Insert row number $i at position $mi+1+($lo=$mi+1) in index Next EndFuncOr you can download this file if you prefer: Sort.au3 I have tested how long time the three methods (_ArrayMultiColSort by Melba23, SQLite sort by Chimp, and the method above) takes to sort six arrays with 10,000/50,000 rows and 3/6/9 columns. The arrays are sorted by column 0 (strings), 1 (integers) and 2 (reals). Column 0 and 1 contains a relatively large number of duplicates.Results for 10,000 rows:$aItems[10000][3] $aItems[10000][6] $aItems[10000][9] Fill array ... Fill array ... Fill array ... Fill array ... done Fill array ... done Fill array ... done Sort by index ... Sort by index ... Sort by index ... Time: 1217.88761269971 Time: 1248.21605830786 Time: 1236.41466104082 Sort by index ... done Sort by index ... done Sort by index ... done Sort by SQLite ... Sort by SQLite ... Sort by SQLite ... Time: 2635.69246331332 Time: 3543.51988465855 Time: 4398.68212872624 Sort by SQLite ... done Sort by SQLite ... done Sort by SQLite ... done Sort by _ArrayMultiColSort ... Sort by _ArrayMultiColSort ... Sort by _ArrayMultiColSort ... Time: 1146.7832396923 Time: 1521.86873177777 Time: 1831.70970213038 Sort by _ArrayMultiColSort ... done Sort by _ArrayMultiColSort ... done Sort by _ArrayMultiColSort ... doneResults for 50,000 rows:$aItems[50000][3] $aItems[50000][6] $aItems[50000][9] Fill array ... Fill array ... Fill array ... Fill array ... done Fill array ... done Fill array ... done Sort by index ... Sort by index ... Sort by index ... Time: 7166.40803514761 Time: 7174.31887542089 Time: 7188.0017143575 Sort by index ... done Sort by index ... done Sort by index ... done Sort by SQLite ... Sort by SQLite ... Sort by SQLite ... Time: 13285.8896390571 Time: 17742.5454596211 Time: 21928.3266376507 Sort by SQLite ... done Sort by SQLite ... done Sort by SQLite ... done Sort by _ArrayMultiColSort ... Sort by _ArrayMultiColSort ... Sort by _ArrayMultiColSort ... Time: 6216.31940253656 Time: 8181.67386319132 Time: 10040.1219591297 Sort by _ArrayMultiColSort ... done Sort by _ArrayMultiColSort ... done Sort by _ArrayMultiColSort ... doneAll necessary code to repeat the tests is included in the zip: Sorting.7z. Run Test.au3.I'm interested in this topic because I need a quick way to sort and maintain (large) arrays in Virtual listviews for huge number of rows. Edited June 16, 2015 by LarsJ pixelsearch 1 Controls, File Explorer, ROT objects, UI Automation, Windows Message MonitorCompiled code: Accessing AutoIt variables, DotNet.au3 UDF, Using C# and VB codeShell menus: The Context menu, The Favorites menu. Shell related: Control Panel, System Image ListsGraphics related: Rubik's Cube, OpenGL without external libraries, Navigating in an image, Non-rectangular selectionsListView controls: Colors and fonts, Multi-line header, Multi-line items, Checkboxes and icons, Incremental searchListView controls: Virtual ListViews, Editing cells, Data display functions Link to comment Share on other sites More sharing options...
c.haslam Posted June 17, 2015 Author Share Posted June 17, 2015 Interesting. So SQlite is not the fastest. I will download your scripts. Spoiler CDebug Dumps values of variables including arrays and DLL structs, to a GUI, to the Console, and to the Clipboard Link to comment Share on other sites More sharing options...
jchd Posted June 17, 2015 Share Posted June 17, 2015 No, but it can reveal fastest when the sorting conditions become complex, as I examplified before. It certainly is the most flexible approach but this comes at a price. This is a common tradeoff. 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...
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