Stoex Posted April 27, 2014 Share Posted April 27, 2014 New to this, so if its out there I couldn't find it. Did see topic regarding 1D array. looking to code the most efficient way to delete blanks from 2D array. this is what I thought would work, but please shoot holes in it but do so with comments that would allow me to understand what and why. Thanks. Array: col 0 col1 col2 abc efg 123 blank blank blank hij 456 xyz For $i = UBound($aArray1) - 1 To 0 Step -1 $j = "" If $aArray1[$i] [$j] = "" Then _ArrayDelete($aArray1, $i) EndIf Next ;looking for the simplest yet efficient way of doing this ;the entire row has to be blank before any deletion should occur. ;wasn't sure what to do about $j as for a loop. got errors. Link to comment Share on other sites More sharing options...
Moderators Melba23 Posted April 27, 2014 Moderators Share Posted April 27, 2014 Stoex,This works for me: #include <Constants.au3> #include <Array.au3> Global $aArray[4][3] = [["col 0", "col1", "col2"], ["abc", "efg", "123"], ["", "", ""], ["hij", "", "xyz"]] For $i = UBound($aArray, $UBOUND_ROWS) - 1 To 0 Step -1 ; Create a blank variable $sTemp = "" For $j = 0 To UBound($aArray, $UBOUND_COLUMNS) - 1 ; Add each of the elements in the row $sTemp &= $aArray[$i][$j] ; If it contains something then ignore this row If $sTemp <> "" Then ContinueLoop 2 Next ; There was nothing at all in that row _ArrayDelete($aArray, $i) Next _ArrayDisplay($aArray, "", Default, 8)Please ask if you have any 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 Link to comment Share on other sites More sharing options...
mikell Posted April 27, 2014 Share Posted April 27, 2014 And if you get an error -like I did- just use this For $i = UBound($aArray) - 1 To 0 Step -1 ; Create a blank variable $sTemp = "" For $j = 0 To UBound($aArray, 2) - 1 ;... etc Link to comment Share on other sites More sharing options...
Moderators Melba23 Posted April 27, 2014 Moderators Share Posted April 27, 2014 mikell,Best use the Beta - you know how guinness HATES "magic numbers"! 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...
mikell Posted April 27, 2014 Share Posted April 27, 2014 A true const-mania At least let us write codes able to work with the releases Link to comment Share on other sites More sharing options...
jchd Posted April 28, 2014 Share Posted April 28, 2014 These Const are ridiculous. How are you going to name the 16 - 2 = 14 next possible dimensions? The parameter is an integer denoting the dimension index. My (late) $0.02 czardas 1 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...
czardas Posted April 28, 2014 Share Posted April 28, 2014 (edited) Hurray! Added obfuscation. 'Rows' is not a suitable description for the dimension of an array. It's good for tables and that's about as far as it goes. Edited April 28, 2014 by czardas operator64 ArrayWorkshop Link to comment Share on other sites More sharing options...
guinness Posted April 28, 2014 Share Posted April 28, 2014 (edited) These Const are ridiculous. How are you going to name the 16 - 2 = 14 next possible dimensions?The parameter is an integer denoting the dimension index. My (late) $0.02...and what would you suggest? A true const-mania At least let us write codes able to work with the releasesI am not forcing you to use constants, but I prefer readable code over...going back and forth to the help file. Edited April 28, 2014 by guinness UDF List: _AdapterConnections() • _AlwaysRun() • _AppMon() • _AppMonEx() • _ArrayFilter/_ArrayReduce • _BinaryBin() • _CheckMsgBox() • _CmdLineRaw() • _ContextMenu() • _ConvertLHWebColor()/_ConvertSHWebColor() • _DesktopDimensions() • _DisplayPassword() • _DotNet_Load()/_DotNet_Unload() • _Fibonacci() • _FileCompare() • _FileCompareContents() • _FileNameByHandle() • _FilePrefix/SRE() • _FindInFile() • _GetBackgroundColor()/_SetBackgroundColor() • _GetConrolID() • _GetCtrlClass() • _GetDirectoryFormat() • _GetDriveMediaType() • _GetFilename()/_GetFilenameExt() • _GetHardwareID() • _GetIP() • _GetIP_Country() • _GetOSLanguage() • _GetSavedSource() • _GetStringSize() • _GetSystemPaths() • _GetURLImage() • _GIFImage() • _GoogleWeather() • _GUICtrlCreateGroup() • _GUICtrlListBox_CreateArray() • _GUICtrlListView_CreateArray() • _GUICtrlListView_SaveCSV() • _GUICtrlListView_SaveHTML() • _GUICtrlListView_SaveTxt() • _GUICtrlListView_SaveXML() • _GUICtrlMenu_Recent() • _GUICtrlMenu_SetItemImage() • _GUICtrlTreeView_CreateArray() • _GUIDisable() • _GUIImageList_SetIconFromHandle() • _GUIRegisterMsg() • _GUISetIcon() • _Icon_Clear()/_Icon_Set() • _IdleTime() • _InetGet() • _InetGetGUI() • _InetGetProgress() • _IPDetails() • _IsFileOlder() • _IsGUID() • _IsHex() • _IsPalindrome() • _IsRegKey() • _IsStringRegExp() • _IsSystemDrive() • _IsUPX() • _IsValidType() • _IsWebColor() • _Language() • _Log() • _MicrosoftInternetConnectivity() • _MSDNDataType() • _PathFull/GetRelative/Split() • _PathSplitEx() • _PrintFromArray() • _ProgressSetMarquee() • _ReDim() • _RockPaperScissors()/_RockPaperScissorsLizardSpock() • _ScrollingCredits • _SelfDelete() • _SelfRename() • _SelfUpdate() • _SendTo() • _ShellAll() • _ShellFile() • _ShellFolder() • _SingletonHWID() • _SingletonPID() • _Startup() • _StringCompact() • _StringIsValid() • _StringRegExpMetaCharacters() • _StringReplaceWholeWord() • _StringStripChars() • _Temperature() • _TrialPeriod() • _UKToUSDate()/_USToUKDate() • _WinAPI_Create_CTL_CODE() • _WinAPI_CreateGUID() • _WMIDateStringToDate()/_DateToWMIDateString() • Au3 script parsing • AutoIt Search • AutoIt3 Portable • AutoIt3WrapperToPragma • AutoItWinGetTitle()/AutoItWinSetTitle() • Coding • DirToHTML5 • FileInstallr • FileReadLastChars() • GeoIP database • GUI - Only Close Button • GUI Examples • GUICtrlDeleteImage() • GUICtrlGetBkColor() • GUICtrlGetStyle() • GUIEvents • GUIGetBkColor() • Int_Parse() & Int_TryParse() • IsISBN() • LockFile() • Mapping CtrlIDs • OOP in AutoIt • ParseHeadersToSciTE() • PasswordValid • PasteBin • Posts Per Day • PreExpand • Protect Globals • Queue() • Resource Update • ResourcesEx • SciTE Jump • Settings INI • SHELLHOOK • Shunting-Yard • Signature Creator • Stack() • Stopwatch() • StringAddLF()/StringStripLF() • StringEOLToCRLF() • VSCROLL • WM_COPYDATA • More Examples... Updated: 22/04/2018 Link to comment Share on other sites More sharing options...
Solution jguinch Posted April 28, 2014 Solution Share Posted April 28, 2014 Without _ArrayDelete : #include <Constants.au3> #include <Array.au3> Local $aArray[4][3] = [["col 0", "col1", "col2"], ["abc", "efg", "123"], ["", "", ""], ["hij", "", "xyz"]] Local $iCount = 0, $sTemp For $i = 0 To UBound($aArray, 1) - 1 $sTemp = "" For $j = 0 To UBound($aArray, 2) - 1 $aArray[ $iCount][$j] = $aArray[$i][$j] $sTemp &= $aArray[$i][$j] Next If $sTemp <> "" Then $iCount += 1 Next Redim $aArray[ $iCount][UBound($aArray, 2) ] _ArrayDisplay($aArray) Spoiler Network configuration UDF, _DirGetSizeByExtension, _UninstallList Firefox ConfigurationArray multi-dimensions, Printer Management UDF Link to comment Share on other sites More sharing options...
czardas Posted April 28, 2014 Share Posted April 28, 2014 (edited) Guinness - 1st dimension, 2nd dimension 3rd dimension etc... ==> no constants needed. The 'number of dimensions' could be a named constant, if you really think it's necessary (the number zero is not descriptive). The numbers 1, 2, 3 etc... are not really magic numbers. They are just numbers - nothing more, nothing less. Changing them is counter-intuitive, or ridiculous as jchd puts it. In any case, magic numbers have their place, although it doesn't apply here. Edited April 28, 2014 by czardas operator64 ArrayWorkshop Link to comment Share on other sites More sharing options...
guinness Posted April 28, 2014 Share Posted April 28, 2014 (edited) For the new user 2nd dimension doesn't really say much.Anyhow I am not working on AutoIt so someone else will have to change it. Edited April 28, 2014 by guinness UDF List: _AdapterConnections() • _AlwaysRun() • _AppMon() • _AppMonEx() • _ArrayFilter/_ArrayReduce • _BinaryBin() • _CheckMsgBox() • _CmdLineRaw() • _ContextMenu() • _ConvertLHWebColor()/_ConvertSHWebColor() • _DesktopDimensions() • _DisplayPassword() • _DotNet_Load()/_DotNet_Unload() • _Fibonacci() • _FileCompare() • _FileCompareContents() • _FileNameByHandle() • _FilePrefix/SRE() • _FindInFile() • _GetBackgroundColor()/_SetBackgroundColor() • _GetConrolID() • _GetCtrlClass() • _GetDirectoryFormat() • _GetDriveMediaType() • _GetFilename()/_GetFilenameExt() • _GetHardwareID() • _GetIP() • _GetIP_Country() • _GetOSLanguage() • _GetSavedSource() • _GetStringSize() • _GetSystemPaths() • _GetURLImage() • _GIFImage() • _GoogleWeather() • _GUICtrlCreateGroup() • _GUICtrlListBox_CreateArray() • _GUICtrlListView_CreateArray() • _GUICtrlListView_SaveCSV() • _GUICtrlListView_SaveHTML() • _GUICtrlListView_SaveTxt() • _GUICtrlListView_SaveXML() • _GUICtrlMenu_Recent() • _GUICtrlMenu_SetItemImage() • _GUICtrlTreeView_CreateArray() • _GUIDisable() • _GUIImageList_SetIconFromHandle() • _GUIRegisterMsg() • _GUISetIcon() • _Icon_Clear()/_Icon_Set() • _IdleTime() • _InetGet() • _InetGetGUI() • _InetGetProgress() • _IPDetails() • _IsFileOlder() • _IsGUID() • _IsHex() • _IsPalindrome() • _IsRegKey() • _IsStringRegExp() • _IsSystemDrive() • _IsUPX() • _IsValidType() • _IsWebColor() • _Language() • _Log() • _MicrosoftInternetConnectivity() • _MSDNDataType() • _PathFull/GetRelative/Split() • _PathSplitEx() • _PrintFromArray() • _ProgressSetMarquee() • _ReDim() • _RockPaperScissors()/_RockPaperScissorsLizardSpock() • _ScrollingCredits • _SelfDelete() • _SelfRename() • _SelfUpdate() • _SendTo() • _ShellAll() • _ShellFile() • _ShellFolder() • _SingletonHWID() • _SingletonPID() • _Startup() • _StringCompact() • _StringIsValid() • _StringRegExpMetaCharacters() • _StringReplaceWholeWord() • _StringStripChars() • _Temperature() • _TrialPeriod() • _UKToUSDate()/_USToUKDate() • _WinAPI_Create_CTL_CODE() • _WinAPI_CreateGUID() • _WMIDateStringToDate()/_DateToWMIDateString() • Au3 script parsing • AutoIt Search • AutoIt3 Portable • AutoIt3WrapperToPragma • AutoItWinGetTitle()/AutoItWinSetTitle() • Coding • DirToHTML5 • FileInstallr • FileReadLastChars() • GeoIP database • GUI - Only Close Button • GUI Examples • GUICtrlDeleteImage() • GUICtrlGetBkColor() • GUICtrlGetStyle() • GUIEvents • GUIGetBkColor() • Int_Parse() & Int_TryParse() • IsISBN() • LockFile() • Mapping CtrlIDs • OOP in AutoIt • ParseHeadersToSciTE() • PasswordValid • PasteBin • Posts Per Day • PreExpand • Protect Globals • Queue() • Resource Update • ResourcesEx • SciTE Jump • Settings INI • SHELLHOOK • Shunting-Yard • Signature Creator • Stack() • Stopwatch() • StringAddLF()/StringStripLF() • StringEOLToCRLF() • VSCROLL • WM_COPYDATA • More Examples... Updated: 22/04/2018 Link to comment Share on other sites More sharing options...
czardas Posted April 28, 2014 Share Posted April 28, 2014 (edited) If a user is unable to understand the term 'second dimension', they really need to learn some elementary maths terminology before learning about multidimensional arrays. If a person is new to programming; then clear, descriptive, consistent and correct terminology will be an enormous asset to them. Things have improved a lot regarding this - much thanks to you. I seem to remember a time when the Help file said something about the 0th dimension. I fell off my chair laughing - an inappropriate theoretical concept used to describe a real world item. Edited April 28, 2014 by czardas operator64 ArrayWorkshop Link to comment Share on other sites More sharing options...
Stoex Posted April 28, 2014 Author Share Posted April 28, 2014 Thanks to everybody. As a newbie I'm amazed at the wealth of knowledge all of you have. btw - not sure if i clicked the "mark solved" button in the right manner, but MY problem was resolved thanks to everyone's code input so I clicked all of them and now think it must mean a particular response. Any way you all helped me. Link to comment Share on other sites More sharing options...
Stoex Posted April 28, 2014 Author Share Posted April 28, 2014 Ok, just dropped the solutions into test file of 1500 records. The code by jguinch processed much faster. Just looking at how fast Array displays on screen (before and after), did not use timer. So as a beginner, can either author lend some comment on this? Thanks in advance. Link to comment Share on other sites More sharing options...
czardas Posted April 30, 2014 Share Posted April 30, 2014 gunness - I think I was being over critical about the constants. It's not something I would have included but perhaps it's not such a bad thing for beginners after all. operator64 ArrayWorkshop 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