Quantcast
Channel: AutoIt v3 - General Help and Support
Viewing all articles
Browse latest Browse all 12506

Image Search not returning error...

$
0
0

Hey guys, so I'm pretty new to this, but I think I have the basic concepts down. I'm trying to use Image Search and it works perfectly, and finds the image and sets the mouse cursor there. However, whenever it cannot find the  the image, I does not return a value, but instead I get this error:

"C:\Program Files (x86)\AutoIt3\Include\ImageSearchUpdate.au3" (58) : ==> Array variable has incorrect number of subscripts or subscript dimension range exceeded.: $x=Int(Number($array[2])) $x=Int(Number(^ ERROR

It has something to do with the include file, so I dont know how to fix it... Here is the include file that I am using

AutoIt         
#include-once ; ------------------------------------------------------------------------------ ; ; AutoIt Version: 3.0 ; Language:       English ; Description:    Functions that assist with Image Search ;                 Require that the ImageSearchDLL.dll be loadable ; ; ------------------------------------------------------------------------------ ;=============================================================================== ; ; Description:      Find the position of an image on the desktop ; Syntax:           _ImageSearchArea, _ImageSearch ; Parameter(s): ;                   $findImage - the image file location or HBitmap to locate on the ;                                   desktop or in the Specified HBitmap ;                   $tolerance - 0 for no tolerance (0-255). Needed when colors of ;                                image differ from desktop. e.g GIF ;                   $resultPosition - Set where the returned x,y location of the image is. ;                                     1 for centre of image, 0 for top left of image ;                   $x $y - Return the x and y location of the image ; ;                   $HBMP - optional hbitmap to search in. sending 0 will search the desktop. ; ; Return Value(s):  On Success - Returns 1 ;                   On Failure - Returns 0 ; ; Note: Use _ImageSearch to search the entire desktop, _ImageSearchArea to specify ;       a desktop region to search ; ;=============================================================================== Func _ImageSearch($findImage,$resultPosition,ByRef $x, ByRef $y,$tolerance, $HBMP=0)    return _ImageSearchArea($findImage,$resultPosition,0,0,@DesktopWidth,@DesktopHeight,$x,$y,$tolerance,$HBMP) EndFunc Func _ImageSearchArea($findImage,$resultPosition,$x1,$y1,$right,$bottom,ByRef $x, ByRef $y, $tolerance,$HBMP=0)     ;MsgBox(0,"asd","" & $x1 & " " & $y1 & " " & $right & " " & $bottom)     If IsString($findImage) Then         if $tolerance>0 then $findImage = "*" & $tolerance & " " & $findImage         If $HBMP = 0 Then             $result = DllCall("ImageSearchDLL.dll","str","ImageSearch","int",$x1,"int",$y1,"int",$right,"int",$bottom,"str",$findImage)         Else             $result = DllCall("ImageSearchDLL.dll","str","ImageSearchEx","int",$x1,"int",$y1,"int",$right,"int",$bottom,"str",$findImage,"ptr",$HBMP)         EndIf     Else         $result = DllCall("ImageSearchDLL.dll","str","ImageSearchExt","int",$x1,"int",$y1,"int",$right,"int",$bottom, "int",$tolerance, "ptr",$findImage,"ptr",$HBMP)     EndIf     ; If error exit     if $result="0" then return 0     ; Otherwise get the x,y location of the match and the size of the image to     ; compute the centre of search     $array = StringSplit($result[0],"|")    $x=Int(Number($array[2]))    $y=Int(Number($array[3]))    if $resultPosition=1 then       $x=$x + Int(Number($array[4])/2)       $y=$y + Int(Number($array[5])/2)    endif    return 1 EndFunc ;=============================================================================== ; ; Description:      Wait for a specified number of seconds for an image to appear ; ; Syntax:           _WaitForImageSearch, _WaitForImagesSearch ; Parameter(s): ;                   $waitSecs  - seconds to try and find the image ;                   $findImage - the image to locate on the desktop ;                   $tolerance - 0 for no tolerance (0-255). Needed when colors of ;                                image differ from desktop. e.g GIF ;                   $resultPosition - Set where the returned x,y location of the image is. ;                                     1 for centre of image, 0 for top left of image ;                   $x $y - Return the x and y location of the image ; ; Return Value(s):  On Success - Returns 1 ;                   On Failure - Returns 0 ; ; ;=============================================================================== Func _WaitForImageSearch($findImage,$waitSecs,$resultPosition,ByRef $x, ByRef $y,$tolerance,$HBMP=0)     $waitSecs = $waitSecs * 1000     $startTime=TimerInit()     While TimerDiff($startTime) < $waitSecs         sleep(100)         $result=_ImageSearch($findImage,$resultPosition,$x, $y,$tolerance,$HBMP)         if $result > 0 Then             return 1         EndIf     WEnd     return 0 EndFunc ;=============================================================================== ; ; Description:      Wait for a specified number of seconds for any of a set of ;                   images to appear ; ; Syntax:           _WaitForImagesSearch ; Parameter(s): ;                   $waitSecs  - seconds to try and find the image ;                   $findImage - the ARRAY of images to locate on the desktop ;                              - ARRAY[0] is set to the number of images to loop through ;                                ARRAY[1] is the first image ;                   $tolerance - 0 for no tolerance (0-255). Needed when colors of ;                                image differ from desktop. e.g GIF ;                   $resultPosition - Set where the returned x,y location of the image is. ;                                     1 for centre of image, 0 for top left of image ;                   $x $y - Return the x and y location of the image ; ; Return Value(s):  On Success - Returns the index of the successful find ;                   On Failure - Returns 0 ; ; ;=============================================================================== Func _WaitForImagesSearch($findImage,$waitSecs,$resultPosition,ByRef $x, ByRef $y,$tolerance,$HBMP=0)     $waitSecs = $waitSecs * 1000     $startTime=TimerInit()     While TimerDiff($startTime) < $waitSecs         for $i = 1 to $findImage[0]             sleep(100)             $result=_ImageSearch($findImage[$i],$resultPosition,$x, $y,$tolerance,$HBMP)             if $result > 0 Then                 return $i             EndIf         Next     WEnd     return 0 EndFunc

Is there anyway for Imagesearch to return a value if it cannot find the picture?
Thanks!
Rob


Viewing all articles
Browse latest Browse all 12506

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>