Frage zu Schleifen Step aber bei Stop-Wert halten ..?

  • hi leute,

    ich will eine schleife laufen lassen mit einem Step-Wert.
    Allerdings soll der letzte wert ($stop) auf jedenfall zugewiesen werden (also nicht überspringen wie bei For Next Step)
    .. ich mache das zZt. mit einer While Schleife (s.u.)

    geht das auch eleganter??

    Einmal editiert, zuletzt von UPIA (10. Januar 2012 um 10:19)

  • Klar, es gibt ja auch mehrere Schleifentypen. Der Typ, der das kann ist die For Schleife:

    [autoit]

    For $i = $start To $stop Step $step
    ; Deine Befehle
    Next

    [/autoit]


    EDIT: Aber wie ich jetzt erst gesehen habe, hast du das ja verwendet von daher: Wo liegt genau das Problem?
    Am Ende soll also das Rauskommen

    [autoit]

    $i = $Stop

    [/autoit]

    ?

    mfg
    Hauke

  • Ich würde es so:

    [autoit]


    $i = $start
    Do
    ; deine anweisungen
    $i = $i+$step
    Until $i > $stop

    [/autoit]


    Oder so:

    [autoit]


    $i = $start
    While $i < $stop
    ; deine anweisungen
    $i = $i + $step
    WEnd

    [/autoit]


    machen,
    je nach dem, ob die schleife mindestens einmal durchlaufen werden soll, oder nicht

    MFG inventor

    wenn's weitere Fragen gibt -> PN
    wenn da keine Antwort kommt, überdenk deine Frage noch mal

  • howdy ho!

    vielleicht nicht die eleganteste lösung aber folgendes müsste auch funktionieren:

    [autoit]

    For $i = $start To $stop Step $step
    ;befehle etc.
    If $i + $step > $stop Then ExitLoop
    Next

    [/autoit]

    mfg
    sgtigram

  • hi leute,
    danke für Eure Mühe. :thumbup:
    allerdings funzt keine der antworten (ich benutze daher die loesung wie ganz oben gepostet)
    nur als hintergrund-info. das ist für eine grafik-animation die einen balken verschiebt. daher muss sie beim letzten wert stehen bleiben und nicht einfach wie for..next jeden x-ten Step anlaufen.

  • Moin, irgendwie erscheint mir der Code sowieso nicht so wirklich sinnig kannst du evneutell mal deinen ganzen Code bzw einen Funktionierenden teil der darauf bezogen ist Posten.

    Gruß Marvin

  • danke protex,
    funzt ja alles (siehe erstes post) wollte nur eine evtl. elegantere loesung.
    damit du den sinn erkennst nochmal genauer:
    wie oben geschrieben: ich muss einen grafik-balken z.b. 3-pixel-breit => immer 3-pixel verschieben (Step3).
    damit der balken aber genau an einem pixel stehen bleibt z.b. bei 100 also nicht bei 96 oder 99 muss ich die letzte position genau anfahren (z.b. 100-3= 97) ..
    funzt wie gesagt alles, dachte nur evtl. gibts einen befehl wie For x=3 To 100 Step 3 Stop 100 .. oder sowas eben schon fertig.

  • Hi,
    also dein Beispiel funktioniert aber auch nicht richtig. Gib mal als $stop 100 an und schau dir dann mal die Werte an, es wird am Schluss 2 x die 100 ausgegeben und $i ist am Schluss auch 103, genau wie bei der For/Next Schleife.

    Macht dieser Code was du willst?

    Spoiler anzeigen
    [autoit]

    $start = 1
    $stop = 100
    $step = 3
    Do
    ; loop stuff
    if $start>= $stop then $start=$stop
    ConsoleWrite($start & @crlf)
    $start += $step
    Until $start >= $stop+$step

    [/autoit]
  • hi bastel..
    das war nur ein zahlenbeispiel ...
    stop wird autom. berechnet und wäre genau genommen 98 damit der 3 pixel breite balken auf 98,99,100 liegt ..
    Dein code (do until) ist kürzer und wie du sagst springt er auch nie 2x an die selbe stelle. auf alle fälle eine verbesserung :thumbup:
    oki .. das wars hier!
    danke leutz! :P