Sign in to follow this  
Followers 0
Shane0000

_ArraySearch Error?

3 posts in this topic

#1 ·  Posted (edited)

Local $aArray_1[3] = [0,'x',2]

$a1 = Execute('$aArray_' & 1 )
If @error Then Msgbox(0,@error,'Execute not working')
_ArrayDisplay($a1)
$i1 = _ArraySearch($a1,'y')
If @error Then Msgbox(0,@error,'not working - 0')
ConsoleWrite('$i1: ' & $i1 & @CRLF)
$i1 = _ArraySearch($a1,'x')
If @error Then Msgbox(0,@error,'not working - 1')
ConsoleWrite('$i1: ' & $i1 & @CRLF)

$i1 = _ArraySearch($aArray_1,'y')
If @error Then Msgbox(0,@error,'not working - 2')
ConsoleWrite('$i1: ' & $i1 & @CRLF)
$i1 = _ArraySearch($aArray_1,'x')
If @error Then Msgbox(0,@error,'not working - 3')
ConsoleWrite('$i1: ' & $i1 & @CRLF)

Im not sure what is going on in the above example. _ArraySearch should return a -1 if the item searched for is not found, however :

_ArraySearch returns a 0 when searching for 'y' in the above array. [0,'x',2]

_ArraySearch returns a 0 when searching for 'x' even tho 'x' resides in row 1

Also referencing the $aArray_1 variable returns the same 0 from _ArraySearch both times.

No @error codes are set off either.

What am I missing here ? Thanks 

Edited by Shane0000

Share this post


Link to post
Share on other sites



It looks like this has something to do with the mixed type of elements in your array.

It works if you set the $iCompare flag in the call to _ArraySearch to a value of 2.

Share this post


Link to post
Share on other sites

Ahh thanks I reread the help file and see that the default turns a string to = 0.

Thanks

Share this post


Link to post
Share on other sites

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 account

Sign in

Already have an account? Sign in here.


Sign In Now
Sign in to follow this  
Followers 0

  • Similar Content

    • algiuxas
      By algiuxas
      Hello everybody, so I might found a bug in _ArraySearch:
       
      #include <Array.au3> Local $abc[2] = ["b", "b"] $h = "+---------------------------------+" & @CRLF ConsoleWrite($h) For $i = 0 To 1 $abc[0] = 0 out() $abc[0] = 1 out() $abc[0] = -1 out() $abc[0] = "Abc" out() $abc[1] = "Hello" Next Func txt() Return "$abc = [" & $abc[0] & ", " & $abc[1] & "]" & @CRLF & _ "> _ArraySearch($abc,""Hello"") = " EndFunc ;==>txt Func shouldoutput($ans) Return "_ArraySearch Should return: " & ($ans ? 1 : -1) EndFunc ;==>shouldoutput Func out() ConsoleWrite("> " & txt() & _ArraySearch($abc, "Hello") & @CRLF & "> " & shouldoutput($abc[1] == "Hello") & @CRLF & $h) EndFunc ;==>out Exit Sorry for this messy script
    • LoneWolf_2106
      By LoneWolf_2106
      Hi,
      i have a 2d array and i am using _ArraySearch to find the index of an array element. I store the result in a variable.
      When i show  the variable, i see just a digit like "1", instead of "[1][3]" or something like that.
      Can someone tell me how to get the number of row and column of the searched element?
      Thanks in advance
    • rootx
      By rootx
      . THX
      I should use _arraysearch or there is another function to be used?
      #include <Array.au3> #include <File.au3> Global Const $sFilePath = @ScriptDir&"\1.txt",$sFilePath2= @ScriptDir&"\2.txt" FileOpen($sFilePath,$FO_OVERWRITE) For $x = 1 to 10 FileWriteLine($sFilePath,$x&"test") Next FileClose($sFilePath) FileOpen($sFilePath2,$FO_OVERWRITE) For $x2 = 1 to 5 FileWriteLine($sFilePath2,$x2&"test") Next FileClose($sFilePath2) Local $aRetArray,$aRetArray2 $aArray = _FileReadToArray($sFilePath,$aRetArray) $aArray2 = _FileReadToArray($sFilePath2,$aRetArray2) If UBound($aRetArray) > UBound($aRetArray2) Then For $s = 1 To UBound($aRetArray) - 1 $search = _ArraySearch($aRetArray2, $aRetArray[$s]) If @error = 6 Then MsgBox(48, "Attention", $aRetArray[$s] & " was not found!!!") EndIf Next EndIf