dromenox Posted September 30, 2014 Share Posted September 30, 2014 (edited) What's wrong on my function to compare two arrays? Func _ArrayIsEqual($array1, $array2) If Not IsArray($array1) Then Return False If Not IsArray($array2) Then Return False $iSizeA = UBound($array1) $iSizeB = UBound($array2) If $iSizeA = $iSizeB Then For $i = 0 To $iSizeA - 1 Step 1 If $array1[$i] <> $array2[$i] Then Return False Next Else Return False EndIf Return True EndFunc Sometimes this error happens: Array variable has incorrect number of subscripts or subscript dimension range exceeded .: I do not know if the error is in the function or where I am using this function, but I did a check on the function not to have problems. Edited September 30, 2014 by dromenox Link to comment Share on other sites More sharing options...
MikahS Posted September 30, 2014 Share Posted September 30, 2014 Remember that the value returned by UBound() is one greater than the index of an array's last element. Snips & Scripts My Snips: graphCPUTemp ~ getENVvarsMy Scripts: Short-Order Encrypter - message and file encryption V1.6.1 ~ AuPad - Notepad written entirely in AutoIt V1.9.4 Feel free to use any of my code for your own use. Forum FAQ Link to comment Share on other sites More sharing options...
dromenox Posted September 30, 2014 Author Share Posted September 30, 2014 (edited) Remember that the value returned by UBound() is one greater than the index of an array's last element. For $i = 0 To $iSizeA - 1 Step 1 Edited September 30, 2014 by dromenox Link to comment Share on other sites More sharing options...
MikahS Posted September 30, 2014 Share Posted September 30, 2014 My apologies, but this line will fail if they are not the same and throw that error If $array1[$i] <> $array2[$i] Then Return False Snips & Scripts My Snips: graphCPUTemp ~ getENVvarsMy Scripts: Short-Order Encrypter - message and file encryption V1.6.1 ~ AuPad - Notepad written entirely in AutoIt V1.9.4 Feel free to use any of my code for your own use. Forum FAQ Link to comment Share on other sites More sharing options...
dromenox Posted September 30, 2014 Author Share Posted September 30, 2014 My apologies, but this line will fail if they are not the same and throw that error If $array1[$i] <> $array2[$i] Then Return False If they are not the same: If $iSizeA = $iSizeB Then Link to comment Share on other sites More sharing options...
MikahS Posted September 30, 2014 Share Posted September 30, 2014 (edited) If they are not the same: If $iSizeA = $iSizeB Then Then you have not provided enough information for us, please give the full error, as the error message will give the line number. Edited September 30, 2014 by MikahS Snips & Scripts My Snips: graphCPUTemp ~ getENVvarsMy Scripts: Short-Order Encrypter - message and file encryption V1.6.1 ~ AuPad - Notepad written entirely in AutoIt V1.9.4 Feel free to use any of my code for your own use. Forum FAQ Link to comment Share on other sites More sharing options...
Moderators Melba23 Posted September 30, 2014 Moderators Share Posted September 30, 2014 dromenox,An obvious missing check is that the 2 arrays are both 1D - if you try to read an element of a 2D array with 1D syntax you get the "incorrect number of subscripts " error. So first off I would add a couple of further lines to check the number of dimensions and the size of an eventual second one:If UBound($array1, 0) <> UBound($array2, 0) Then Return False ; Not both 1D/2D If UBound($array1, 2) <> UBound($array2, 2) Then Return False ; Not the same size in 2nd dimention (1D arrays return 0)Then when you check the contents you will need to have separate checks for 1D and 2D arrays - you need different syntax for each as I explained above. M23 MikahS and Bert 2 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...
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