FOR-Schleife in IF-Abfrage

  • Ich habe eine Frage:

    Ist es möglich in einer IF-Abfrage eine FOR-Schleife durchzufüren?

    Bsp:

    [autoit]

    If $1 = 1 Then
    For $2 to 10 Step 1
    ...
    Next
    Endif

    [/autoit]

    Ich denke das sollte so funktioneren, tut es aber nicht.

  • Würd ich auch sagen. Ich habe aber konkret dieses Probelm:

    [autoit]

    Func _winmove()
    If $up = 0 Then
    For $pos = @DesktopHeight - 20 - 30 to @DesktopHeight - $guiheigth - 30 Step 5
    WinMove($guiname,"",@Desktopwidth - $guiwidth,$pos)
    Next
    $up = 1
    ElseIf $up = 1 Then
    For $pos = @DesktopHeight - $guiheigth - 30 to @DesktopHeight - 20 - 30 Step 5
    WinMove($guiname,"",@Desktopwidth - $guiwidth,@DesktopHeight - 20 - 30)
    Next
    $up = 0
    EndIf
    EndFunc

    [/autoit]

    Diese FOR-Schleife wird nicht ausgeführt. Warum? ?( ?( ?(

  • entweder

    • $up hat weder den Wert 0 noch 1
    • der Parameter für Stop ist grösser als der Start-Parameter, in diesem Fall muss stepval negativ sein

    die 2. Möglichkeit ist die warscheinlichere

    mfg (Auto)Bert

  • Hast du eventuell etwas in der Art vor?

    Spoiler anzeigen
    [autoit]


    ShellExecute("notepad.exe")

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

    _winmove("[CLASS:Notepad]", "down")

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

    Func _winmove(Const $sWindow, Const $sDirection)
    WinWait($sWindow)
    Switch $sDirection
    Case "up"
    WinMove($sWindow, "", 0, 0)
    Case "down"
    $aReturn = WinGetPos($sWindow)
    WinMove($sWindow, "", @DesktopWidth - $aReturn[2], @DesktopHeight - $aReturn[3])
    EndSwitch
    EndFunc ;==>_winmove

    [/autoit]

    BZW mit Forschleife ^^

    Spoiler anzeigen
    [autoit]

    ShellExecute("notepad.exe")

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

    _winmove("[CLASS:Notepad]", "up")

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

    Func _winmove(Const $sWindow, Const $sDirection)
    WinWait($sWindow)
    Switch $sDirection
    Case "up"
    For $i = 10 To 0 Step -2
    WinMove($sWindow, "", 0 + $i, 0 + $i)
    Sleep(300)
    Next
    Case "down"
    For $i = 10 To 0 Step -2
    $aReturn = WinGetPos($sWindow)
    WinMove($sWindow, "", @DesktopWidth - $aReturn[2] - $i, @DesktopHeight - $aReturn[3] - $i)
    Sleep(300)
    Next
    EndSwitch
    EndFunc ;==>_winmove

    [/autoit]

    21 is only half the truth.

  • Wieder mal der typische Fall von "Rate mal mit Rosenthal"....
    Im Menü "Extras" in Scite gibt es Befehle, die genau für solch SIMPLE Fälle eingesetzt werden.
    Mich würde es echt mal wundern, wenn hier ein Script mit Debug-Msgboxen oder Debug-Consolewrites oder noch besser, Tracelines, gepostet würde und dann herauskäme, daß irgendetwas nicht stimmt....von einer Abfrage mit VarGetType wage ich mittlerweile nicht mal zu träumen...

    Manchmal erinnert mich das alles an den uralten Kalauer:
    Kommt ein Mann zum Arzt und sagt, "Herr Doktor, ich habe immer so ein Stechen im Auge wenn ich Kaffee trinke!", darauf der Arzt:"Dann nehmen sie das nächste Mal einfach den Löffel aus der Tasse!"

    Will sagen, die "Kunst" am Programmieren ist nicht, irgendwelche Befehle aneinanderzureihen, sondern im Fehlerfall schnell durch die Wahl geeigneter Mittel (Debug usw.) den Fehler einzugrenzen und zu beheben. DAS sollte als allererstes gelernt werden!

    Wie sagt die Werbung so schön..."separates the boys from the men"

  • Wieder mal der typische Fall von "Rate mal mit Rosenthal"....
    Im Menü "Extras" in Scite gibt es Befehle, die genau für solch SIMPLE Fälle eingesetzt werden.
    Mich würde es echt mal wundern, wenn hier ein Script mit Debug-Msgboxen oder Debug-Consolewrites oder noch besser, Tracelines, gepostet würde und dann herauskäme, daß irgendetwas nicht stimmt....von einer Abfrage mit VarGetType wage ich mittlerweile nicht mal zu träumen...

    Manchmal erinnert mich das alles an den uralten Kalauer:
    Kommt ein Mann zum Arzt und sagt, "Herr Doktor, ich habe immer so ein Stechen im Auge wenn ich Kaffee trinke!", darauf der Arzt:"Dann nehmen sie das nächste Mal einfach den Löffel aus der Tasse!"

    Will sagen, die "Kunst" am Programmieren ist nicht, irgendwelche Befehle aneinanderzureihen, sondern im Fehlerfall schnell durch die Wahl geeigneter Mittel (Debug usw.) den Fehler einzugrenzen und zu beheben. DAS sollte als allererstes gelernt werden!

    Wieder mal der typische Fall von "Rate mal mit Rosenthal"....
    Im Menü "Extras" in Scite gibt es Befehle, die genau für solch SIMPLE Fälle eingesetzt werden.
    Mich würde es echt mal wundern, wenn hier ein Script mit Debug-Msgboxen oder Debug-Consolewrites oder noch besser, Tracelines, gepostet würde und dann herauskäme, daß irgendetwas nicht stimmt....von einer Abfrage mit VarGetType wage ich mittlerweile nicht mal zu träumen...

    Manchmal erinnert mich das alles an den uralten Kalauer:
    Kommt ein Mann zum Arzt und sagt, "Herr Doktor, ich habe immer so ein Stechen im Auge wenn ich Kaffee trinke!", darauf der Arzt:"Dann nehmen sie das nächste Mal einfach den Löffel aus der Tasse!"

    Will sagen, die "Kunst" am Programmieren ist nicht, irgendwelche Befehle aneinanderzureihen, sondern im Fehlerfall schnell durch die Wahl geeigneter Mittel (Debug usw.) den Fehler einzugrenzen und zu beheben. DAS sollte als allererstes gelernt werden!

    Wie sagt die Werbung so schön..."separates the boys from the men"

    Naja vielleicht versteh ich dich ja falsch nur finde ich deine AUSSAGEN UNANGEMESSEN sogar in Richtung dumm. Wenn man sich autoit alleine beibringt ist nicht alles so klar als wenn man es schojn Jahrelang macht und ich finde es traurig das sich leute wie Du nur im Forum rumtreiben um anderen zu sagen das sie noch schlecht sind schäm dich.

  • ich denke mal er meinte damit, dass es in scite eingebaut schon debug funktionen gibt, sowie debug msgbox'en oder consolewrite's, wo man nur die variable markieren muss und dann auf diesen eintrag gehen muss und beim ausführen werden diese werte angezeigt , und jangxx diese auch benutzen sollte.
    ok es war vllt etwas schwierig rauszulesen, :wacko:

  • Hi,

    Zitat von Name mit vielen Neunen

    Naja vielleicht versteh ich dich ja falsch

    da bin ich sicher :rolleyes:
    Aber da kommst du gleich selbst drauf, nachdem du folgende Fragen beantwortest:

    Nach ca. 2 Jahren gräbst du einen Thread aus, ohne eigenen Lösungsvorschlag, warum?

    In welcher Art und Weise hat der Threadersteller auch nur EINEN Ansatz zur Lösung seines Problems gepostet?

    Was hat der Threadersteller getan, um herauszufinden WARUM sein Script nicht funktioniert?

    Hätte der Threadersteller sein Problem mit Abfragen der von ihm benutzten Variablen z.B. so

    Spoiler anzeigen
    [autoit]

    Func _winmove()
    ConsoleWrite('@@ Debug(' & @ScriptLineNumber & ') : $up = ' & $up & @crlf & '>Error code: ' & @error & @crlf) ;### Debug Console
    If $up = 0 Then
    ConsoleWrite('@@ Debug(' & @ScriptLineNumber & ') : @DesktopHeight - $guiheigth - 30 = ' & @DesktopHeight - $guiheigth - 30 & @CRLF & '>Error code: ' & @error & @CRLF) ;### Debug Console
    ConsoleWrite('@@ Debug(' & @ScriptLineNumber & ') : @DesktopHeight - 20 - 30 = ' & @DesktopHeight - 20 - 30 & @CRLF & '>Error code: ' & @error & @CRLF) ;### Debug Console
    For $pos = @DesktopHeight - 20 - 30 To @DesktopHeight - $guiheigth - 30 Step 5
    ConsoleWrite('@@ Debug(' & @ScriptLineNumber & ') : $pos = ' & $pos & @crlf & '>Error code: ' & @error & @crlf) ;### Debug Console
    WinMove($guiname, "", @DesktopWidth - $guiwidth, $pos)
    ConsoleWrite('@@ Debug(' & @ScriptLineNumber & ') : @DesktopWidth - $guiwidth = ' & @DesktopWidth - $guiwidth & @crlf & '>Error code: ' & @error & @crlf) ;### Debug Console
    Next
    $up = 1
    ConsoleWrite('@@ Debug(' & @ScriptLineNumber & ') : $up = ' & $up & @crlf & '>Error code: ' & @error & @crlf) ;### Debug Console
    ElseIf $up = 1 Then
    For $pos = @DesktopHeight - $guiheigth - 30 To @DesktopHeight - 20 - 30 Step 5
    WinMove($guiname, "", @DesktopWidth - $guiwidth, @DesktopHeight - 20 - 30)
    Next
    $up = 0
    EndIf
    EndFunc

    [/autoit]

    lösen können, bzw wäre ihm dann aufgefallen dass sich die Variablen ausserhalb des Wertebereichs bewegen?


    Ich persönlich stelle mir die o.g Fragen immer beim Lesen eines "Hilfe"-Threads, und dementsprechend fällt die Antwort aus :rolleyes:

    Zitat von Alizame

    ok es war vllt etwas schwierig rauszulesen,

    hehe, leider gibt´s in diesem Forum kein Ironie-Tag, und wenn es eins gäbe, wüssten die meisten Aufgrund Ihres Alters nicht, warum und wieso es benutzt wird :D