Error bei Letzter Zeile der For Schleife

  • allerdings bricht mir mein Programm bei der
    letzten Zeiler der For-Schleife immer ab


    Die letzte Zeile der Forschleife ist Sleep. Wäre mir neu das dies einen Fehler auslösen kann.

    und ich find einfach den Fehler nicht :(


    Poste bitte dein komplettes Skript, damit man testen kann.

    mfg autoBert

  • Naja letzte Zeile ist vielleicht etwas schwammig gesagt. Die _PixelListToArray Funktion liefert ja X Reihen und die Spalten 0 für X und 1 für Y.
    Die Schleife bricht immer bei der letzten Reihe des Arrays mit einem Error ab (unabhängig davon in welche Richtung das Array durchlaufen wird)


    Script kann ich leider im Moment nicht vollständig liefern weil ich paar Tage nicht zuhause bin, aber im Prinzip ist das auch alles was gemacht wird nur das eben noch in einem GUI _LOGMSG angezeigt wird ;)

  • Ja schon nur $blue[0][0] und $blue[0][1] liefern mir immer Werte für X und Y die in der oberen linken Bildschirmecke, also außerhalb des Fensters liegen, auf das geklickt werden soll.

    Wenn ich $count-1 setze zähl ich doch nur bis zum vorletzten Array-Element

  • Hi,
    vllt. hilft dir folgendes Schnipsel bei der Fehlersuche ;)

    Spoiler anzeigen
    [autoit]

    $s='Eins|Zwei|Drei'
    $Array=StringSplit($s, '|')
    $Prt='$s:' &$s &@CRLF &'$Array[0]=' &$Array[0] &@CRLF
    For $i=1 To $Array[0]
    $Prt &= $Array[$i] &@CRLF
    Next
    MsgBox(0, '', $Prt)

    [/autoit]

    Es ist sehr praktisch immer die (deutsche) Hilfe parat zu haben..
    Gruß
    ytwinky

    (Ich) benutze stets die aktuelle (Beta) und SciTE..

  • [autoit]

    $count = UBound($blue)

    [/autoit]

    $count entspricht hier UBound. Du musst bis UBound - 1 gehen, was also $count - 1 entspricht.
    Da liegt Cheater Dieter schon richtig.

    Wenn du bis UBound zählen würdest, würdest du ein Feld außerhalb des Arrays ansprechen, was einen Fehler hervorrufen würde.
    Hättest du die Fehlermeldung gelesen, würdest du auch genau wissen, was nicht stimmt...

    In Zukunft solltest du übrigens auch die Fehlermeldung posten... :rolleyes:

    (Die Sätze sind ja mal mehr als monoton... :thumbdown: )

  • Ah ok wenn sich Ubound so verhält. Ich kenn das eigentlich nur das Funktionen die die Elemente in einem Array zählen auch nur so viele zählen wie drin sind und nicht über den Tellerrand hinausschauen.
    Versteh den Sinn zwar nicht aber werds mir merken :rolleyes:

    Vielen Dank werds gleich ausprobiern wenn ich wieder vor meinem Rechner sitze.

  • Das UBound - Problem ist eigentlich relativ simpel zu verstehen:

    Ein Array, so zum Beispiel $aArray[10] beinhaltet die Elemente $aArray[0] bis $aArray[9].
    UBound gibt in diesem Fall also 10 zurück (Index 0-9)
    Wenn du nun aber in einer Schleife damit arbietest und mit der Schleifenvariablen, nennen wir sie $i den Array-Index ansprichst kannst du nur bis Index 9 zählen, da das Array keinen mit 10 nummerierten Index besitzt.

    [autoit]


    $aArray[10] = [1,2,3,4,5,6,7,8,9,10]
    $count = UBound($aArray) ; $count wird auf 10 gesetzt
    For $i = 0 To $count - 1 ; Zähler-Variable nur bis 9, da dies dem letzten Index entspricht
    MsgBox(0,$i,$aArray[$i])
    Next

    [/autoit]

    Gruß

    UNPLEASANT SPOILER

    You just lost the game!

  • Ja schon nur $blue[0][0] und $blue[0][1] liefern mir immer Werte für X und Y die in der oberen linken Bildschirmecke, also außerhalb des Fensters liegen, auf das geklickt werden soll.


    Dies klingt ganz danach als ob du ein Spiel automatisieren möchtest.

    Script kann ich leider im Moment nicht vollständig liefern weil ich paar Tage nicht zuhause bin,

    bestärkt michin dieser Annahme, denn wie kannst du an einem SKript schreiben obwojl du es nichz hast? Sollte es etwas anderes als ein Spiel sein nenne bitte die Anwendung, es gibt geschicktere Möglichkeiten, als Maus schubsen und klicken, um Anwendungen zu automatisieren,

    daher Vote for CLOSE

    mfg autoBert