Array wird nicht als Array angesehen

  • Guten Morgen

    Ich habe ein Problem mit einer Array.

    [autoit]


    dim $coord_excel[1]
    dim $coord_inst[1]
    ....

    [/autoit][autoit][/autoit][autoit]

    $coord_excel = PixelSearch(426,341,854,683,0x0093f0)
    MsgBox(0,"test", ""&$coord_excel[0]&", "&$coord_excel[1])
    MouseClick("primary", $coord_excel[0],$coord_excel[1],2)
    ....

    [/autoit][autoit][/autoit][autoit]

    $coord_inst = PixelSearch(200,250,854,683,0x0093f0)
    MsgBox(0,"test", ""&$coord_inst[0]&", "&$coord_inst[1])
    MouseClick("secundary", $coord_inst[0],$coord_inst[1],1)

    [/autoit]

    Die Array $coord_excel hat keine Probleme, aber die Array $coord_inst wird nicht als Array angesehen ?(

    Es wird folgender Fehler ausgegeben

    Zitat

    Line 56 (File "G:\support\office_msp_test.au3"):

    MsgBox(0,"test", ""&$coord_inst[0]&", "&$coord_inst[1])
    MsgBox(0,"test", ""&$coord_inst^ ERROR

    Error: Subscript used with non-Array variable.

    Die msgbox() hab ich nur zur kontrolle eingebaut, damit ich die werte sehen kann.

    Einmal editiert, zuletzt von mic5 (25. Juni 2008 um 10:47)

  • Wenn PixelSearch nichts findet kommt auch kein Array zurück, dafür wird @error gesetzt.

    Copy & Paste aus der Online-Hilfe:
    Return Value

    Success: Returns a two-element array of pixel's coordinates. (Array[0] = x, Array[1] = y)
    Failure: Sets @error to 1 if color is not found.

    Spoiler anzeigen
    [autoit]

    Find a pure red pixel in the range 0,0-20,300
    $coord = PixelSearch( 0, 0, 20, 300, 0xFF0000 )
    If Not @error Then
    MsgBox(0, "X and Y are:", $coord[0] & "," & $coord[1])
    EndIf

    [/autoit]
  • Hallo mic5,

    erstmal ist in Deinem Testscript ein Schreibfehler secundary >>> secondary
    Dann kann dein Testscript mit $coord_excel eigentlich auch nicht gehen, da Du das "gedimmte" Array mit der Zeile

    Zitat

    $coord_excel = PixelSearch(426,341,854,683,0x0093f0)


    wieder löscht.
    Selbiges mit $coord_inst

    MfG Schnuffel

    "Sarkasmus ist die niedrigste Form des Witzes, aber die höchste Form der Intelligenz."
    Val McDermid

    ein paar Infos ...

    Wer mehr als "nur" Hilfe benötigt, kann sich gern im Forum "Programmieranfragen" an uns wenden. Wir helfen in allen Fällen, die die Forenregeln zulassen.

    Für schnelle Hilfe benötigen wir ein ! lauffähiges ! Script, dass wir als Demonstration des Problems testen können. Wer von uns erwartet ein Teilscript erstmal lauffähig zu bekommen, der hat
    1. keine wirkliche Not
    2. keinen Respekt vor Menschen die ihm in ihrer Freizeit Ihre Hilfe anbieten
    3. oder ist einfach nur faul und meint wir coden das für ihn

    In solchen Fällen erlaube ich mir, die Anfrage einfach zu ignorieren. ;)

  • Das Problem tritt nur bein $coord_inst array auf.

    Habe den Schreibfehler behoben.
    Das mit der @error schlaufe habe ich auch schon gefunden, nur bringt die mir nichts, das Script muss dort diese Farbe finden, sonst kann die Einstellung nicht weitergeführt werden.

    Ich habe mal des Dim ausgeklammert, immer noch die gleiche meldung:

    Zitat

    Line 56 (File "G:\support\office_msp_test.au3"):

    MsgBox(0,"test", ""&$coord_inst[0]&", "&$coord_inst[1])
    MsgBox(0,"test", ""&$coord_inst^ ERROR

    Error: Subscript used with non-Array variable.

    Die Array's werden sonst im ganzen script nirgens angerührt.

    Schnuffel: ich will ja den PixelSearch in die Array schreiben, oder kann ich beim Mouseklick den PixelSeach "integrieren"?

    Edit: habs grad selbst gelöst, Danke euch für die Hilfe.
    Lösung: vor $coord_inst = PixelSearch einen Sleep() eingefügt und er findet die Coordinaten.

    Danke nochmals

    Einmal editiert, zuletzt von mic5 (25. Juni 2008 um 10:46)

  • @mich selber
    wenn man von etwas keine Ahnung hat, dann sollte man den Mund halten.
    Ich hab mich gerade mal in PixelSearch eingelesen.
    Ich verweise auf den Post#2 von Stilgar:
    http://www.autoit.de/index.php?page=Thread&postID=50524#post50524
    er hat das schon richtig erkannt.
    bau doch in deine MsgBox eine @error-Abfrage ein:

    Spoiler anzeigen
    [autoit]

    If Not @error Then
    MsgBox(0, "X and Y are:", $coord[0] & "," & $coord[1])
    EndIf

    [/autoit]


    Dann hast Du Gewissheit...

    MfG Schnuffel

    "Sarkasmus ist die niedrigste Form des Witzes, aber die höchste Form der Intelligenz."
    Val McDermid

    ein paar Infos ...

    Wer mehr als "nur" Hilfe benötigt, kann sich gern im Forum "Programmieranfragen" an uns wenden. Wir helfen in allen Fällen, die die Forenregeln zulassen.

    Für schnelle Hilfe benötigen wir ein ! lauffähiges ! Script, dass wir als Demonstration des Problems testen können. Wer von uns erwartet ein Teilscript erstmal lauffähig zu bekommen, der hat
    1. keine wirkliche Not
    2. keinen Respekt vor Menschen die ihm in ihrer Freizeit Ihre Hilfe anbieten
    3. oder ist einfach nur faul und meint wir coden das für ihn

    In solchen Fällen erlaube ich mir, die Anfrage einfach zu ignorieren. ;)

  • Wie bereits im Edit, habs mit nem vorgängigen Sleep gelöst, war n'bisschen zu schnell für den Pixelsearch und den Wert den er ausgab war 1, mehr nicht, nun mit dem Sleep findet er die Farbe und fügt die werte korrekt in den Array ein.

    Zu den MSGboxen: die verschwinden jetzt wieder, da das Script den Teil jetzt ohne fehler abläuft.

    Danke für eure Hilfe