subscript used with non-array variable

06/12/2012 07:32 krotty#1
Hey Leute, ich bin vor kurzem auf AutoIT gestoßen und interessiere mich für die ImageSearch Funktion, also habe ich mir ein kleines Script gebastelt. Das Script soll nach einem bestimmten Bild suchen und wenn dieses Bild nicht gefunden wurde die F1 Taste drücken (F1 generiert in einem Spiel für welches ich das Script nutzen will ein neues Bild). Das Script soll dann solange F1 drücken, bis ein bestimmtes Bild gefunden wurde, und dann eine MsgBox anzeigen.

Da es mein erstes kleines mini projekt war und auch soweit funktioniert, war ich erst froh, aber nun habe ich folgendes Problem:
An meinem PC (Win XP) funktioniert das Script, aber wenn ich das Script auf einem anderen Rechner(Win7 x64) starten möchte, kommt sobald ich das Script mit F8 starten möchte ein Fenster mit: subscript used with non-array variable

Das ist der Code:

#include<ImageSearch.au3>

HotKeySet("{F8}","starten")
HotKeySet("{F9}","beenden")
$x1=0
$y1=0

While 1
Sleep (1)
WEnd

Func starten()
While 1
$result=_ImageSearch("123.png",0,$x1,$y1,100)
If $result= 1 Then
MsgBox(1,"info","blabla")
Sleep (200)

Else
Send ("{F1}")
Sleep (400)
EndIf
WEnd
EndFunc

Func beenden()
Exit 0
EndFunc

Ich habe das Script einem Kumpel geschickt um zu testen, ob das Script auf seinem Rechner (Win7 x64) läuft, aber es kommt der selbe Fehler.


[Only registered and activated users can see links. Click Here To Register...]

Uploaded with [Only registered and activated users can see links. Click Here To Register...]

Ich hoffe ihr könnt mir helfen

p.s. wie stelle ich das an, das dass Script nach dem es das Bild gefunden hat und die MsgBox zeigt solange pausiert, bis ich in der MsgBox auf den OK Knopf drücke?:confused:
06/12/2012 13:48 Freddy​#2
Denke so sollte es gehen

PHP Code:
#include <ImageSearch.au3>

HotKeySet("{F8}","starten")
HotKeySet("{F9}","beenden")

While 
1
   Sleep 
(200)
WEnd

Func starten
()
   
$x1 0
   $y1 
0
   
While 1
      $result 
_ImageSearch('123.png'1$x1$y1100)
      If 
$result 1 Then
         MsgBox
(0,"info","blabla")
         
Sleep(200)
      Else
         
Send("{F1}")
         
Sleep(400)
      EndIf
   
WEnd
EndFunc

Func beenden
()
   Exit 
EndFunc 
Und für Windows 7 solltest du auf Compile Script (x64) gehen
06/12/2012 15:13 krotty#3
Vielen Dank, ich werds gleich mal testen

also bei mir funktioniert es, aber auf meinem anderen PC und auf dem PC von meinem Kumpel klappt es leider immer noch nicht. Jetzt kommt aber ein anderer Error

[Only registered and activated users can see links. Click Here To Register...]

Uploaded with [Only registered and activated users can see links. Click Here To Register...]

habe auch beim Compilen den Haken bei x64 reingemacht und bei x84 habe ich den Haken rausgemacht

p.s. Mir ist aufgefallen das dass Script Teilweise sehr langsam bzw verzögert F1 drückt, sobald ich die Maus in dem Fenster habe, wo ein neues Bild generiert wird. Sobald ich die Maus außerhalb von diesem Fenster habe, klickt das Script schnell F1. Die Maus muss sich aber leider in dem Fenster befinden, da man das Bild sonst nicht sieht. Ist das vlt PC bedingt, dass es so langsam bei mir klickt?
06/14/2012 07:39 krotty#4
Hat sonst noch jemand eine Idee wie ich das Script unter Win7 zum laufen bekomme?
06/14/2012 14:45 Njahs#5
Wo ist dein Problem?
Der Debugger sagt dir alles, was du wissen musst,
um den Fehler zu beheben.
_ImageSearch([...]) liefert einen Array zurück.
06/09/2013 06:47 TrickKiste#6
Also ich habe das ausprobiert und bei mir kommt immer noch diese nachricht hoch (error: subscript used with non-array variable) Tipps? Habe ein aenlichen script (Imagesearch)... Kann einer helfen?!
06/09/2013 13:34 FacePalmMan#7
Quote:
Originally Posted by TrickKiste View Post
Also ich habe das ausprobiert und bei mir kommt immer noch diese nachricht hoch (error: subscript used with non-array variable) Tipps? Habe ein aenlichen script (Imagesearch)... Kann einer helfen?!
1. guck aufs datum bevor du in einem thread postest. wenn du in ein veralteten thread postest erscheint er wieder [Only registered and activated users can see links. Click Here To Register...]! deswegen: erstell einen neuen thread damit alles übersichtlich bleibt!
2. Imagesearch hat einen kleinen programmierfehler. das problem liegt also nicht an deinem script sondern an der Imagesearch udf. um genau zu sein in der 40. zeile.