Schleifenproblem: For ... To ... Next

  • [autoit]


    For $i=3 To 8 Step 1
    Msgbox(0,"Test",$i)
    Next

    [/autoit]

    ;Gibt es eine geschickte Möglichkeit nach $i=8 einen "letzten" Durchlauf mit $i=1 zu starten?

    3 Mal editiert, zuletzt von m47 (25. Juni 2012 um 04:26)

  • Naja das wäre z.B. mit If möglich ;)

    [autoit]

    For $i=3 To 9
    If $i <> 9 Then
    Msgbox(0,"Test",$i)
    Else
    Msgbox(0,"Test",1)
    EndIf
    Next

    [/autoit]

    21 is only half the truth.

  • Wenn dann fast nur so:

    Spoiler anzeigen
    [autoit]

    For $i=3 To 8
    Box($i)
    Next
    Box(1)

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

    Func Box($Zahl)
    Msgbox(0,"Test",$Zahl)
    EndFunc

    [/autoit]

    Edit: Oder so:

    Spoiler anzeigen
    [autoit]

    Global $Folge[7] = [3,4,5,6,7,8,1]

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

    For $i In $Folge
    Msgbox(0,"Test",$i)
    Next

    [/autoit]

    Einmal editiert, zuletzt von AspirinJunkie (17. September 2010 um 21:11)

  • @ Sen das wär ne Endlosschleife ;)

    [autoit]

    For $i=3 To 9
    If $i <> 9 Then
    $ausgabe = $i
    Else
    $ausgabe = 1
    EndIf
    Msgbox(0,"Test",$ausgabe)
    Next

    [/autoit]

    21 is only half the truth.

  • Zitat

    $Zahl)


    ich danke dir! nur diese $zahl verstehe ich nicht, das kommt ja wie aus dem nichts...
    woher weiss $zahl was in ihm steckt?
    gibts da auch $buchstabe? oder ähnliche befehle?

  • Box ist eine Funktion. (Stichwort >>Func<<)
    $Zahl ist der erste Parameter dieser Funktion (kann den Parameter nennen wie ich will).
    Innerhalb der Funktion kann dann diese Variable dann verwendet werden.
    Ihren Wert bekommt sie beim Aufruf der Funktion ( Box($i) ).
    Als ersten Parameter erhält die Funktion Box() also den Wert von $i.
    Also erhält $Zahl in der Funktion Box() den Wert von $i.

  • Zitat

    Box ist eine Funktion. (Stichwort >>Func<<)
    $Zahl ist der erste Parameter dieser Funktion (kann den Parameter nennen wie ich will).
    Innerhalb der Funktion kann dann diese Variable dann verwendet werden.
    Ihren Wert bekommt sie beim Aufruf der Funktion ( Box($i) ).
    Als ersten Parameter erhält die Funktion Box() also den Wert von $i.
    Also erhält $Zahl in der Funktion Box() den Wert von $i.

    ja die funktion ist mir klar nur wusste ich noch nicht das man Variablen ohne = Werte zuordnen kann:)

  • Ich frag mich immer noch warum so umständlich.

    [autoit]


    For $i=3 To 8 Step 1
    Msgbox(0,"Test",$i)
    Next
    For $i=1 To 8 Step 1
    Msgbox(0,"Test",$i)
    Next

    [/autoit]

    Macht genau was du willst. Warum also nur eine Msg Box?
    Ob du eine MsgBox 20x aufrufst, oder 2 10x macht keinen Unterschied o.o

  • Macht nicht was er will.
    Er will keine Schleife mit Start $i=1 sondern nur einen Aufruf mit $i=1.
    Ich denke das hier ist nur ein Beispielcode.
    Wenn es tatsächlich nur eine Msgbox wäre könnte man diese problemlos noch einmal dahinter schreiben.
    Ich denke sein Schleifeninhalt ist deutlich komplexer als nur eine MsgBox und dann macht Vermeidung von Codedopplung schon Sinn.

  • m47:
    Dadurch das es in der Func steht bekommt $zahl den Wert der in der aufgerufenen Functionen Box() stehenden Variable/ des in der Box() stehenden Wertes

    mfg BB

    "IF YOU'RE GOING TO KILL IT
    OPEN SOURCE IT!"

    by Phillip Torrone

    Zitat von Shoutbox

    [Heute, 11:16] Andy: ....böseböseböseböse....da erinnere ich mich daran, dass man den Puschelschwanz eines KaRnickels auch "Blume" nennt....ob da eins zum anderen passt? :rofl: :rofl: :rofl: :rofl:

    https://autoit.de/index.php?page…leIt#post251138

    Neon Snake

  • Zitat

    Ah okay, falsch verstanden.

    Ich denke allerdings auch das der Code complexer ist.
    Sonst würde er denke ich keine Frage stellen die man leichter lösen kann

    danke an alle, die lösung mit dem array hat mir sehr geholfen, da sonst enorme codeverdopplung:)

    wo kann dieses thema auf gelöst gesetzt werden ?

    3 Mal editiert, zuletzt von m47 (18. September 2010 um 18:28)