funktionen unterbrechen

  • ich habe ja meine letzte frage als gelöst eingestellt als ein neues problem auftrat

    während mein programm läuft sollen ja an bestimmten stellen nach 2 seiten gecheckt werden.
    mein problem ist, dass jene checks mein programm abrechen:

    [autoit]

    while 1
    mouseclick ;läuft bis hier("left",3,4)
    $title = Wingettitle("Windows Internet Explorer") ;programm beendet und code am ende der schleife ausgelöst
    If $title = "[OASIS: Warnung] - Windows Internet Explorer" Then Exitloop
    Sleep(500)
    ... ; übersprunge
    WEnd

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

    MsgBox(0, "test", "test"

    [/autoit]

    Einmal editiert, zuletzt von robertmaxity (18. Juli 2011 um 21:12)

  • HI robertmaxity,

    zum einen sollte aufjedenfall mal die IF-Anweisung auch wieder geschlossen werden und die MsgBox eine runde Klammer zu bekommen.
    Ich weiß ja nicht ob du dich nur vertipp hast oder per Copy&Paste das dein richtiger Quellcode ist.

    Auch wäre es hilfreich wenn du schreiben könntst, ob du dein Script sofort zu einer .exe umwandelst (Build bzw. F7) anstatt diese erst einem Syntaxcheck zu unterziehen.Es ist nähmlichso, dass Autoit nur beim erstellen der .exe keine Fehelermeldung herausgibt und somit dein beschädigter Code umgesetzt wird. Das wüder erklären warum dein Programm abbricht (weil dein hier gepostetes Script beschädigt ist) .

    Am besten immer erst nen SyntaxCheck unterziehen und auf die Fehlerausgabe achten.

    Hier mal der umgeschriebene Code:

    Spoiler anzeigen
    [autoit]


    while 1
    mouseclick ;läuft bis hier("left",3,4)
    $title = Wingettitle("Windows Internet Explorer") ;programm beendet und code am ende der schleife ausgelöst

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

    if $title = "[OASIS: Warnung] - Windows Internet Explorer" Then Exitloop
    Sleep(500)
    Endif

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

    ... ; übersprunge

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

    WEnd

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

    MsgBox(0, "test", "test")

    [/autoit]
  • mein problem ist, wenn ich das endif hinzu schreibe gibt es einen error:
    ...missing WEnd

    der code (diesmal kopiert):

    [autoit]

    While 1
    mouseClick("Left", 2, 3)
    $title = Wingettitle("Windows Internet Explorer") ;programm beendet und code am ende der schleife ausgelöst

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

    if $title = "[OASIS: Warnung] - Windows Internet Explorer" Then Exitloop
    Sleep(500)
    Endif
    ...
    WEnd

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

    MsgBox(0, "test", "test")

    [/autoit]
    • Offizieller Beitrag

    zum einen sollte aufjedenfall mal die IF-Anweisung auch wieder geschlossen werden


    Da liegst du falsch, nicht wenn es ein Ein-Zeilen-Statement ist. Nur wenn die Then-Anweisung in einer neuen Zeile steht muß auch ein EndIf gesetzt werden.

    @robertmaxity: Sag mal lieber, was du machen willst, aus deinem Code werde ich nicht ganz schlau.

  • ich habe x funktionen die eine website überprüfen

    zwischendurch soll er nach errors ausschau halten.
    tritt ein error auf oder verschreibt er sich gibt es zwei unterschiedliche titel die die geöffnete website dann haben kann

    wenn einer der beiden titel aktiv ist (if wingettitle("windows internet explorer")) dann soll er die schleife aus funktionne beenden, einen screenshot machen und speichern und dann von vorne anfangen

    mein problem ist, das er wenn er es überprüfen soll (überprüft wird mit

    [autoit]

    $title = Wingettitle("Windows Internet Explorer")

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

    if $title = "[OASIS: Warnung] - Windows Internet Explorer" Then Exitloop
    Sleep(500)

    [/autoit]

    ) mein programm immer beendet wird und die resl. funktionen ausgeführt werden

    endif kann ich nicht nutzen das es dann den error (missing WEnd) gibt

  • Duch das Exitloop gehst du aus der While Schleife, und wie ich es sehe endet das Programm nac der While mit einer MsgBox. Also musst du ntweder anstat ExitLoop eine Funktion aufrufen die das gewünchte Ergebnis bringt.

  • die schleife soll dann aber auch beendet werden und die funktion von vorne anfangen

  • Zitat von »BigDaddy«



    zum einen sollte aufjedenfall mal die IF-Anweisung auch wieder geschlossen werden

    Da liegst du falsch, nicht wenn es ein Ein-Zeilen-Statement ist. Nur wenn die Then-Anweisung in einer neuen Zeile steht muß auch ein EndIf gesetzt werden.

    @robertmaxity: Sag mal lieber, was du machen willst, aus deinem Code werde ich nicht ganz schlau.


    Hmmm, interessanter Ansatz ;) , ich habe glaube ich noch nie einzeilige If-Anweisung geschrieben.Aber wenn du dir da sicher bist, stimm ich dir zu .

  • das heißt, wenn ich so code müsste es gehen :

    [autoit]

    $title = Wingettitle("Windows Internet Explorer")
    If $title = "[OASIS: Warnung] - Windows Internet Explorer" Then #cs ( Exitloop Else ) #ce ContinueLoop
    Sleep(500)

    [/autoit]
  • mal eineandere sache

    ich möchte einen screencapture machen, was aber beim speichern scheitert

    wa ist falsch??? falls ihr das erkennt

    [autoit]

    #include <ScreenCapture.au3>

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

    $Year = @YEAR
    $Mon = @MON
    $Day = @MDAY
    $Hour = @HOUR
    $Min = @MIN

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

    $time = $Year & ":" & $Mon & ":" & $Day & ":" & $Hour & ":" & $Min & ".jpg"
    _ScreenCapture_Capture(@ScriptDir & "\" & $time)
    MsgBox(0, "msg", $time)

    [/autoit]