PixelSearch - Farbe nicht gefunden

  • Hallo, als totaler Neuling in AutoIt habe ich eine hoffentlich schnell zu beantwortende Frage :rolleyes:

    Ich habe bisher eher mit verschiedenen Befehlen experimentiert bis ich einige brauchbare Scripte hatte, als mir wirklich die Zeit genommen komplexe Anleitungen durchzulesen. Für meine Zwecke ist (bisher^^) das völlig ausreichend.

    Mein Problem ist, dass ich inzwischen an dieser Stelle nicht mehr weiterkomme:


    [autoit]

    Global $Active = 0
    While 1
    If $Active = 1 Then
    Sleep(2000)
    $Ja = PixelSearch(931,231,1676,982,0x57FDAE)
    MouseClick ( "left", $Ja[0], $Ja[1])
    EndIf
    WEnd

    [/autoit]

    funktioniert wunderbar, solange bis er die angegebene Farbe mal nicht findet, dann bekomme ich:

    ---------------------------
    AutoIt Error
    ---------------------------
    Line 5 (File "***"):

    MouseClick ( "middle", $Ja[0], $Ja[1])
    MouseClick ( "middle", $Ja^ ERROR

    Error: Subscript used with non-Array variable.
    ---------------------------
    OK
    ---------------------------


    Wo und wie muss ich hier etwas verändern, damit das Script statt mir diese Meldung zu geben einfach sieht "Farbe nicht gefunden" -> also mach "das und das" und wiederhole die schleife?

    Ich habe nun schon rund 2 Stunden mit "If @error Then" und "If IsArray($Ja) = 1 Then" und was ich noch so im Netz gefunden habe herumgefuchtelt, die erste Stunde hab ich den Fehler gemacht und versucht "Func" in die While schleife zu setzen.

    Ich hoffe ihr lacht nicht zu lange über mich und könnt mir weiterhelfen :D

    • Offizieller Beitrag

    Der obrige Code dürfte nie ausgeführt werden.

    [autoit]

    If $Active = 1 Then

    [/autoit]


    Diese Bedingung wird nie erfüllt, vor der While Wend Schleife wird der Wert von $Active auf 0 gesetzt. 8|

  • bitte schön :D

    [autoit]

    Global $Active = 0

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

    $Active = 1
    While 1
    If $Active = 1 Then
    Sleep(2000)
    $Ja = PixelSearch(931,231,1676,982,0x57FDAE)
    If @error Then
    MsgBox(0, '', 'Farbe nicht gefunden')
    Else
    MouseClick ( "left", $Ja[0], $Ja[1])
    EndIf
    EndIf
    WEnd

    [/autoit]

    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. ;)

  • BugFix
    Naja das sind halt die ersten und häufigsten Befehle die ich so gefunden habe - gleich mal ausprobiert :P

    Raupi
    Wie gesagt ich hab (bisher) keine Ahnung von Scripts, programmieren etc.
    Hab das Script mittels Internet - kopieren, einfügen und umschreiben erstellt xD

    Schnuffel
    Danke! so funktioniert´s endlich :)

    Trotzdem hab ich noch eine Frage:

    [autoit]

    If @error Then
    MsgBox(0, '', 'Farbe nicht gefunden')

    [/autoit]


    Was muss hier rein wenn er einfach von vorn anfangen soll, also zum Beispiel nach xx sek. erneut Prüfen, Schleife wiederholen?