For Next schleife funktioniert nicht!

  • tag euch :)

    könnt ihr hier mal bitte schauen, wieso die for next schleife nicht funktioniert?
    $startx , $starty , $x3 , $y3 wurden mit zahlen in ein array gespeichert, funktioniert auch super wenn ich sie mir über _Arraydisplay anzeigen lassen.

    [autoit]


    For $i = 0 To 34
    for $b = 1 to 15
    $Startx2 = $startx[$i]
    $Starty2 = $starty[$i]
    $x = $x3[$b]
    $y = $y3[$b]

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

    If $x > $startx2 and $y > $starty2 Then
    $routex = $x-$startx2
    $routey = $y-$starty2
    If $routex > $routey Then
    $first = $routex-$routey
    FileWrite("coords.txt","von X:"&$startx2&" Y:"&$starty2&" nach X:"&$x&" Y:"&$y&" -- "&$first+$routey&" Felder"&@CRLF)
    Else
    $first = $routey-$routex
    FileWrite("coords.txt","von X:"&$startx2&" Y:"&$starty2&" nach X:"&$x&" Y:"&$y&" -- "&$first+$routex&" Felder"&@CRLF)
    endif
    Endif

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

    If $x < $startx2 and $y < $starty2 Then
    $routex = $startx2-$x
    $routey = $starty2-$y
    If $routex > $routey Then
    $first = $routex-$routey
    FileWrite("coords.txt","von X:"&$startx2&" Y:"&$starty2&" nach X:"&$x&" Y:"&$y&" -- "&$first+$routey&" Felder"&@CRLF)
    Else
    $first = $routey-$routex
    FileWrite("coords.txt","von X:"&$startx2&" Y:"&$starty2&" nach X:"&$x&" Y:"&$y&" -- "&$first+$routex&" Felder"&@CRLF)
    endif
    Endif

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

    If $x > $startx2 and $y < $starty2 Then
    $routex = $x-$startx2
    $routey = $starty2-$y
    If $routex > $routey Then
    $first = $routex-$routey
    FileWrite("coords.txt","von X:"&$startx2&" Y:"&$starty2&" nach X:"&$x&" Y:"&$y&" -- "&$first+$routey&" Felder"&@CRLF)
    Else
    $first = $routey-$routex
    FileWrite("coords.txt","von X:"&$startx2&" Y:"&$starty2&" nach X:"&$x&" Y:"&$y&" -- "&$first+$routex&" Felder"&@CRLF)
    endif
    Endif

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

    If $x < $startx2 and $y > $starty2 Then
    $routex = $startx2-$x
    $routey = $y-$starty2
    If $routex > $routey Then
    $first = $routex-$routey
    FileWrite("coords.txt","von X:"&$startx2&" Y:"&$starty2&" nach X:"&$x&" Y:"&$y&" -- "&$first+$routey&" Felder"&@CRLF)
    Else
    $first = $routey-$routex
    FileWrite("coords.txt","von X:"&$startx2&" Y:"&$starty2&" nach X:"&$x&" Y:"&$y&" -- "&$first+$routex&" Felder"&@CRLF)
    endif
    Endif

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

    If $x = $startx2 and $y > $starty2 Then
    $routey = $y-$starty2
    FileWrite("coords.txt","von X:"&$startx2&" Y:"&$starty2&" nach X:"&$x&" Y:"&$y&" -- "&$routey&" Felder"&@CRLF)
    EndIf
    If $x = $startx2 and $y < $starty2 Then
    $routey = $starty2-$y
    FileWrite("coords.txt","von X:"&$startx2&" Y:"&$starty2&" nach X:"&$x&" Y:"&$y&" -- "&$routey&" Felder"&@CRLF)
    EndIf
    If $x > $startx2 and $y = $starty2 Then
    $routex = $x-$startx2
    FileWrite("coords.txt","von X:"&$startx2&" Y:"&$starty2&" nach X:"&$x&" Y:"&$y&" -- "&$routex&" Felder"&@CRLF)
    EndIf
    If $x < $startx2 and $y = $starty2 Then
    $routex = $startx2-$x
    FileWrite("coords.txt","von X:"&$startx2&" Y:"&$starty2&" nach X:"&$x&" Y:"&$y&" -- "&$routex&" Felder"&@CRLF)
    EndIf

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

    Next
    Next

    [/autoit]
  • Was soll denn daran nicht funktionieren? Welche Fehlermeldung kommt denn und wie sehen eigentlich die Arrays aus?

  • Also wenn mich nicht alles täuscht lässt sich das ganze schonmal so kürzen:

    [autoit]

    $hOpen = FileOpen("coords.txt", 1)
    For $i = 0 To 34
    For $b = 1 To 15
    $routex = Abs($startx[$i] - $x3[$b])
    $routey = Abs($starty[$i] - $y3[$b])
    If $routex > $routey Then
    FileWrite($hOpen, "von X:" & $startx[$i] & " Y:" & $starty[$i] & " nach X:" & $x3[$b] & " Y:" & $y3[$b] & " -- " & Abs($routex - $routey) + $routey & " Felder" & @CRLF)
    Else
    FileWrite($hOpen, "von X:" & $startx[$i] & " Y:" & $starty[$i] & " nach X:" & $x3[$b] & " Y:" & $y3[$b] & " -- " & Abs($routex - $routey) + $routex & " Felder" & @CRLF)
    EndIf
    Next
    Next
    FileClose($hOpen)

    [/autoit]

    Ob das ganze jetz funktioniert weiß ich nicht. Vllt wärs ganz gut wenn du erklärst was in den beiden Array's drinsteht.
    Also was für Koordinaten.
    Achja ich hab noch Fileopen und Fileclose eingefügt. Das sollte man machen wenn oft hintereinander auf eine Datei zugreift

  • werde demnächst die zahlen auchnoch wie die ersten 2 in stringsplit setzen, spart zeilen^^

    Spoiler anzeigen
    [autoit]

    global $x,$y,$startx[100],$starty[100],$x3[100],$xy[100]

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

    $x3 = StringSplit("1198461,1198468,1198491,1198499,1198503,1198506,1198552,1198545,1198554,1198551,1198556,1198552,1198561,1198541,1198563,1198530", ",")
    $y3 = StringSplit("2823366,2823347,2823374,2823366,28233622,2823340,2823339,2823358,2823375,2823397,28234112,2823415,2823425,2823445,2823461,2823475", ",")

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

    $startx[0]= "1198461"
    $startx[1]= "1198468"
    $startx[2]= "1198491"
    $startx[3]= "1198499"
    $startx[4]= "1198503"
    $startx[5]= "1198506"
    $startx[6]= "1198552"
    $startx[7]= "1198545"
    $startx[8]= "1198554"
    $startx[9]= "1198551"
    $startx[10] = "1198556"
    $startx[11] = "1198552"
    $startx[12] = "1198561"
    $startx[13] = "1198541"
    $startx[14] = "1198563"
    $startx[15] = "1198530"
    $startx[16] = "1198535"
    $startx[17] = "1198497"
    $startx[18] = "1198476"
    $startx[19] = "1198467"
    $startx[20] = "1198467"
    $startx[21] = "1198454"
    $startx[22] = "1198453"
    $startx[23] = "1198487"
    $startx[24] = "1198482"
    $startx[25] = "1198477"
    $startx[26] = "1198473"
    $startx[27] = "1198489"
    $startx[28] = "1198510"
    $startx[29] = "1198518"
    $startx[30] = "1198522"
    $startx[31] = "1198489"
    $startx[32] = "1198463"
    $startx[33] = "1198454"
    $startx[34] = "1198449"
    $starty[0] = "2823366"
    $starty[1] = "2823347"
    $starty[2] = "2823374"
    $starty[3] = "2823366"
    $starty[4] = "2823362"
    $starty[5]= "2823340"
    $starty[6]= "2823339"
    $starty[7]= "2823358"
    $starty[8]= "2823375"
    $starty[9]= "2823397"
    $starty[10] = "2823411"
    $starty[11] = "2823415"
    $starty[12] = "2823425"
    $starty[13] = "2823445"
    $starty[14] = "2823461"
    $starty[15] = "2823475"
    $starty[16] = "2823489"
    $starty[17] = "2823489"
    $starty[18] = "2823491"
    $starty[19] = "2823488"
    $starty[20] = "2823481"
    $starty[21] = "2823475"
    $starty[22] = "2823457"
    $starty[23] = "2823461"
    $starty[24] = "2823454"
    $starty[25] = "2823433"
    $starty[26] = "823430"
    $starty[27] = "2823421"
    $starty[28] = "2823419"
    $starty[29] = "2823411"
    $starty[30] = "2823400"
    $starty[31] = "2823414"
    $starty[32] = "2823409"
    $starty[33] = "2823399"
    $starty[34] = "2823385"

    [/autoit]
  • Im zweiten StringSplit ist das Anführungszeichen um eins verrutscht. Ok haste schon berichtigt. ^^

  • Ok ich habs mal lauffähig gemacht:

    Spoiler anzeigen
    [autoit]

    $x3 = StringSplit("1198461,1198468,1198491,1198499,1198503,1198506,1198552,1198545,1198554,1198551,1198556,1198552,1198561,1198541,1198563,1198530",",")
    $y3 = StringSplit("823366,2823347,2823374,2823366,28233622,823340,2823339,2823358,2823375,2823397,28234112,823415,2823425,2823445,2823461,2823475", ",")

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

    Dim $startx[35] = [1198461,1198468,1198491,1198499,1198503,1198506,1198552,1198545,1198554,1198551,1198556,1198552,1198561,1198541,1198563,1198530,1198535,1198497,1198476,1198467,1198467,1198454,1198453,1198487,1198482,1198477,1198473,1198489,1198510,1198518,1198522,1198489,1198463,1198454,1198449]
    Dim $starty[35] = [2823366,2823347,2823374,2823366,2823362,2823340,2823339,2823358,2823375,2823397,2823411,2823415,2823425,2823445,2823461,2823475,2823489,2823489,2823491,2823488,2823481,2823475,2823457,2823461,2823454,2823433,823430,2823421,2823419,2823411,2823400,2823414,2823409,2823399,2823385]

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

    $hOpen = FileOpen("coords.txt",1)
    For $i = 0 To 34
    For $b = 1 To 15
    $routex = Abs($startx[$i] - $x3[$b])
    $routey = Abs($starty[$i] - $y3[$b])
    If $routex > $routey Then
    FileWrite($hOpen, "von X:" & $startx[$i] & " Y:" & $starty[$i] & " nach X:" & $x3[$b] & " Y:" & $y3[$b] & " -- " & Abs($routex - $routey) + $routey & " Felder" & @CRLF)
    Else
    FileWrite($hOpen, "von X:" & $startx[$i] & " Y:" & $starty[$i] & " nach X:" & $x3[$b] & " Y:" & $y3[$b] & " -- " & Abs($routex - $routey) + $routex & " Felder" & @CRLF)
    EndIf
    Next
    Next
    FileClose($hOpen)

    [/autoit]

    Ein array kannst du aber auch gleich so Deklarieren und Initialisieren:

    [autoit]


    Dim $startx[35] = ["1198461", "1198468", "1198491", "1198499", "1198503", "1198506", "1198552", "1198545", "1198554", "1198551", "1198556", "1198552", "1198561", "1198541", "1198563", "1198530", "1198535", "1198497", "1198476", "1198467", "1198467", "1198454", "1198453", "1198487", "1198482", "1198477", "1198473", "1198489", "1198510", "1198518", "1198522", "1198489", "1198463", "1198454", "1198449"]

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

    Edit: nochmal überarbeitet^^

  • so geht es nicht schnitzel^^

    es geht in alle richtungen, obenrechts, rechts, runter, links etc..

    deswegen auch die vielen if abfragen

    und die for schleife funktioniert doch immer noch nicht richtig

    wenn ich das so ansetze:

    [autoit]


    For $i = 0 to 50 step +1
    For $j = 0 to 50 step +1
    ToolTip("Schleife 1: "&$i&" --- Schleife 2: "&$j)
    Next
    Next

    [/autoit]

    Dann erscheint im tooltip:
    Schleife 1: 0 --- Schleife 2: z.B. 30

    wenn die schleife 2 dann bei 50 ist wird schleife 1 auf 1 gesetzt und es fängt wieder bei 0-50 an etc.

    und genau das funktioniert nicht

  • und genau das funktioniert nicht


    Das ist genau das was es ja auch machen soll.
    Zumindest so wie du es gescriptet hast ^^

    Wenn du es anders willst dann musste schon sagen wie :P


  • wenn die schleife 2 dann bei 50 ist wird schleife 1 auf 1 gesetzt und es fängt wieder bei 0-50 an etc.

    und genau das funktioniert nicht

    Bei mir funktioniert das einwandfrei, oder ich verstehe dich falsch

    [autoit]

    For $i = 0 to 3 step +1
    For $j = 0 to 50 step +1
    ConsoleWrite("Schleife 1: "&$i&" --- Schleife 2: "&$j&@CRLF)
    Next
    Next

    [/autoit]
    Result

    Lg, Fabian

  • also es sind 2601 Durchläufe ;)

    [autoit]

    Dim $k
    For $i = 0 to 50 step +1
    For $j = 0 to 50 step +1
    ToolTip("Schleife 1: "&$i&" --- Schleife 2: "&$j)
    $k +=1
    ConsoleWrite($i & '--' & $j & '--' & $k & @CRLF)
    Next
    Next

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