Mehrere While Schleifen?

  • Heyho :)

    Ich hätte mal eine Frage, wie kann man in AutoIT mehrere Whileschleifen machen? Da diese ja unednlich aufgeführt werden...und ich habe einen mit einem Sleep von (1000) und jetzt will ich aber nicht bei dem selben den selben Sleep von (1000) z.B. sleep (5000) oder so, und ich will halt das dieser Befehl immer nach dieser Zeit ausgeführt wird... ._.

    Mit freundlichen Grüßen,

    SelfOwn3D

  • Ich verstehe nicht wirklich was du meinst, aber um eine schleife zu verlassen gibt es

    [autoit]

    Exitloop

    [/autoit]

    es gibt auch die möglichkeit

    [autoit]

    While $iVar = 0

    [/autoit]

    Die $iVar auf etwas was nicht 0 ist zu ändern.
    Am besten gibst du uns ein beispiel und erklärst nochmal genau um was es geht, damit wir dir richtig helfen können

  • [autoit]

    HotKeySet("{F11}", "_Start"HotKeySet("{F12}", "_Test"
    While 1 sleep(500)WEnd
    while 2 sleep(2000)WEnd
    Func _Start () While (1) send("Blabla",1) EndFunc Func _Test () While (2) send("1234",1) WEnd EndFunc

    [/autoit]


    Ich hoffe das erscheint so logisch, ich will halt eine zweite Whileschleife erstellen das ich nicht als mit diesem einem While arbeiten muss, das sich praktisch das Sleep in der zweiten Whileschleife immer wieder wiederholt so wie halt in der ersten, nur das Problem ist, es geht nicht ._. Er benutzt trotzdem die erste Whileschleife X(

    Edit: Ich habe halt im Inet gesehen, das hinter die Whileschleife für die Nummer halt ne Zahl kommt, deswegen dachte ich mit dem einfachen zahlenabändern würde es gehen....

    Mit freundlichen Grüßen,

    SelfOwn3D

  • Das hinter dem While-Keyword ist die Bedingung. Ist ein großer Unterschied (Hast du nicht gesagt du hast schon in VB gecoded?)
    Jedenfalls, am besten solltest du dir wirklich mal das Helpfile anschauen und die Beispiele durcharbeiten, da du ja anscheinend noch nichteinmal wirklich die Grundlagen beherrscht.

    Uebrigens solltest du F11/F12 als Hotkeys vermeiden, da die oft fuer bestimmte Window-Funktionen reserivert sind.
    Btw. meinst du vielleicht sowas:

    [autoit]

    HotKeySet("{F1}", "_Start1")
    HotKeySet("{F2}", "_Start2")
    HotKeySet("{ESC}", "_Exit")

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

    While 1 ; Eins ist hier die Bedingung, 1 = True somit Endlosschleife.
    Sleep(100)
    WEnd

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

    Func _Start1()
    Send('Test1', 1)
    EndFunc

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

    Func _Start2()
    Send('Test2', 1)
    EndFunc

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

    Func _Exit()
    Exit
    EndFunc

    [/autoit]

    There's a joke that C has the speed and efficieny of assembly language combined with readability of....assembly language. In other words, it's just a glorified assembly language. - Teh Interwebz

    C makes it easy to shoot yourself in the foot; C++ makes it harder, but when you do, you blow off your whole leg. - Bjarne Stroustrup
    Genie zu sein, bedeutet für mich, alles zu tun, was ich will. - Klaus Kinski

  • Ja ich habe schon in VB gecodet, und ich weiß stells dir vor was ne Whileschleife ist, und wie sie funktioniert...^^
    Nur ich kann ja nicht wissen, wie der ganze Kram in AutoIT funktioniert...
    Also wenn ich das jetzt so richtig verstehe, arbeitet die Whileschleife jetzt die ganzen Befehle nach unten ab mit jeweils einen Sleep von 100 oder wie? Oder ich bin einfach nur zu blöd das jetzt zu checken ^^

    Mit freundlichen Grüßen,

    SelfOwn3D

  • Also nochmal, ich glaube jetzt kann ichs sinnig ausdrücken, ich möchte
    mit einer While-Schleife einen mit z.B. F1 gestarteten Befehl immer wieder und wieder ausführen lassen, nur ich möchte z.B. das Befehl 1 IMMER nach einem Sleep von 500 wieder ausgeführt wird, und Befehl 2 in der While-Schleife z.B. erst nach einem Sleep von 5000, doch er soll nicht den Sleep von 5000 abwarten bis er wieder von vorne anfängt, sondern soll den Befehl 1 mit einem Sleep von 500 immer und immer wieder ausführen, und sobald die Sleepzeit von 5000 zuende ist, soll er diesen Befehl (2) ausführen, und dennoch sich nicht auf das Sleep von 5000 zu beschränken sondern Befehl 1 direkt immer und immer wieder ausgeben und den Befehl 2 nur von einem Sleep von 5000...


    Klingt iwi verwirrender als vorher... ._.

    Mit freundlichen Grüßen,

    SelfOwn3D

  • Klar geht das. :)

    Spoiler anzeigen
    [autoit]

    HotKeySet("{F2}", "_AdlibReg1")
    HotKeySet("{F3}", "_AdlibReg2")
    HotKeySet("{ESC}", "_Exit")

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

    Local $Reg1, $Reg2

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

    While 1 ; Endlosschleife die nichts tut ausser sleepen ^^
    Sleep(100)
    WEnd

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

    Func _AdlibReg1()
    If $Reg1 = 0 Then
    $Reg1 = AdlibRegister("_AdlibReg1_start", 500) ; 500= Alle 500ms wird die Funktion _AdlibReg1_start() ausgeführt
    Else
    $Reg1 = AdlibUnRegister("_AdlibReg1_start")
    EndIf
    EndFunc

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

    Func _AdlibReg2()
    If $Reg2 = 0 Then
    $Reg2 = AdlibRegister("_AdlibReg2_start", 2000) ;2000= Alle 2000ms wird die Funktion _AdlibReg1_start() ausgeführt
    Else
    $Reg2 = AdlibUnRegister("_AdlibReg2_start") ;
    EndIf
    EndFunc

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

    Func _AdlibReg1_start()
    Send("Blabla",1)
    EndFunc

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

    Func _AdlibReg2_start()
    Send("1234",1)
    EndFunc

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

    Func _Exit()
    Exit
    EndFunc

    [/autoit]


    Edit: Beim ersten mal drücken von F2 bzw F3 wird die Funktion gestartet und bei nochmaligem drücken beendet

    Edit2: Grade gesehen das da noch ein kleiner Fehler drin ist und hab den ausgemerzt :P

    Dieser Beitrag wurde 9521 mal editiert, zum letzten Mal von Blubkuh: Morgen, 02:28.

    [autoit]

    If Not $Elephant Then $Irelephant = True

    [/autoit]

    8 Mal editiert, zuletzt von Blubkuh (1. April 2014 um 18:35)

  • Danke sehr, ich habs auch tatsächlich gerallt :o


    Nochmal so ne doofe Frage nebendran, da ja viele Sachen solche Keys belegt haben, wie kann man z.B. um den zu starten machen mit SHIFT + F1 oder so?

    Mit freundlichen Grüßen,

    SelfOwn3D

  • Kannste mit _IsPressed machen

    Spoiler anzeigen
    [autoit]

    #include <Misc.au3>
    HotKeySet("{ESC}", "_Exit")

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

    Local $Reg1, $Reg2

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

    While 1
    If _IsPressed("10") And _IsPressed("70") Then _AdlibReg1(); 10= Shift, 70 = F1. Nachzulesen in der Hilfe
    If _IsPressed("10") And _IsPressed("71") Then _AdlibReg2(); 10= Shift, 71 = F2. Nachzulesen in der Hilfe
    Sleep(100)
    WEnd

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

    Func _AdlibReg1()
    If $Reg1 = 0 Then
    $Reg1 = AdlibRegister("_AdlibReg1_start", 500) ; 500= Alle 500ms wird die Funktion _AdlibReg1_start() ausgeführt
    Else
    $Reg1 = AdlibUnRegister("_AdlibReg1_start")
    EndIf
    EndFunc

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

    Func _AdlibReg2()
    If $Reg2 = 0 Then
    $Reg2 = AdlibRegister("_AdlibReg2_start", 2000) ;2000= Alle 2000ms wird die Funktion _AdlibReg1_start() ausgeführt
    Else
    $Reg2 = AdlibUnRegister("_AdlibReg2_start") ;
    EndIf
    EndFunc

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

    Func _AdlibReg1_start()
    Send("Blabla",1)
    EndFunc

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

    Func _AdlibReg2_start()
    Send("1234",1)
    EndFunc

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

    Func _Exit()
    Exit
    EndFunc

    [/autoit]

    Dieser Beitrag wurde 9521 mal editiert, zum letzten Mal von Blubkuh: Morgen, 02:28.

    [autoit]

    If Not $Elephant Then $Irelephant = True

    [/autoit]

    Einmal editiert, zuletzt von Blubkuh (1. April 2014 um 19:03)

  • Okai :) Danke sehr :)

    Ich habe noch 'ne Frage, und zwar sind die im Local gesetzten $Reg1 unso ja für die zwei funktioninen, aber ich brauch mehr, wie mache ich das? Ich habs mit ,$reg 3 undso versucht funktioniert nur leider nicht :P

    Mit freundlichen Grüßen,

    SelfOwn3D

  • Okai :) Danke sehr :)

    Ich habe noch 'ne Frage, und zwar sind die im Local gesetzten $Reg1 unso ja für die zwei funktioninen, aber ich brauch mehr, wie mache ich das? Ich habs mit ,$reg 3 undso versucht funktioniert nur leider nicht :P

    Muss funktionieren. Poste mal deinen Code mit der Local Zeile.
    Es darf natürlich kein Leerzeichen zwischen "$reg" und "3".
    Einfach einen durchgängigen Variablennamen nehmen.( Wie z.B. "$GetToTheChoppah")

    Wenn du Fehler in deinem Code hast und hier Hilfe erwartest:
    - Immer Fehlermeldung posten
    - Original oder Beispielcode mit dem Fehler hinzufügen

    Dieser Beitrag wurde 9521 mal editiert, zum letzten Mal von Blubkuh: Morgen, 02:28.

    [autoit]

    If Not $Elephant Then $Irelephant = True

    [/autoit]