Script funktioniert nur im debugmodus Einzelschritt

  • Kann mir jemand sagen warum dieses script im debugmodus funktioniert; die erstellte exe datei aber nicht ???


    Zur Erklärung:

    Das Sript soll nach betätigen des OK Button die jeweilige Datei im Verzeichnis Drucken öffnen und die darin gelisteten Dokumente ween vorhanden ausdrucken.
    In debugmodus (Einzelschritt= funktioniert alles bestens.
    Als exe Datei bleibt die Auswahl leer ??

    Ich verstehs nicht.. Bin Anfänger ;)


    Vieln Dank im Voraus

    Gruß

    Ripple


    #include <Word.au3>
    #include <file.au3>
    #include <ButtonConstants.au3>
    #include <ComboConstants.au3>
    #include <EditConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>
    #include <StaticConstants.au3>


    Dim $file
    Global $Auswahl = "Grau"
    Global $Artikel
    Dim $line
    Dim $oWordApp
    Dim $oDoc
    Dim $Art
    Dim $okbutton

    Opt("GUIOnEventMode", 1) ; Change to OnEvent mode
    $mainwindow = GUICreate("Formular Druck", 200, 200)
    GUISetOnEvent($GUI_EVENT_CLOSE, "CLOSEClicked")
    GUICtrlCreateLabel("Protokolle ausdrucken", 50, 10)
    $okbutton = GUICtrlCreateButton("OK", 70, 150, 50)
    ;$Input1 = GUICtrlCreateInput("c:\dateien.txt", 24, 24, 105, 21)
    $Art = GUICtrlCreateCombo("", 50, 50, 100) ; create first item
    GUICtrlSetData(-1, "Rot|RotBlau|RotGrau|RotGrauBlau|Grau|", "Grau") ; add other item snd set a new default
    GUICtrlSetOnEvent($okbutton, "OKButton")
    GUISetState(@SW_SHOW)


    While 1
    Sleep(1000) ; Idle around
    WEnd


    $Auswahl = GUICtrlRead(6, 1)

    Func OKButton()

    MsgBox(0, "OK", "OK wurde gew?hlt...")

    $Auswahl = GUICtrlRead(6, 1)
    MsgBox(0, "Auswahl", "hier wurde " & $Auswahl & " gewählt...")


    Switch $Auswahl
    Case "Rot"
    MsgBox(0, "Rot", "Rot wurde gew?hlt...")
    $Artikel = "C:\Drucken\Rot.txt"
    FileClose($Artikel)
    Case "RotBlau"
    MsgBox(0, "RotBlau", "RotBlau wurde gew?hlt...")
    $Artikel = "C:\Drucken\RotBlau.txt"
    FileClose($Artikel)
    Case "RotGrau"
    MsgBox(0, "RotGrau", "RotGrau wurde gew?hlt...")
    $Artikel = "C:\Drucken\RotGrau.txt"
    FileClose($Artikel)
    Case "RotGrauBlau"
    MsgBox(0, "RotGrauBlau", "RotGrauBlau wurde gew?hlt...")
    $Artikel = "C:\Drucken\RotGrauBlau.txt"
    FileClose($Artikel)
    Case "Grau"
    MsgBox(0, "Grau", "Grau wurde gew?hlt...")
    $Artikel = "C:\Drucken\Grau.txt"
    FileClose($Artikel)
    Case Else
    $msg = "What are you still doing up?"
    EndSwitch


    MsgBox(0, "End switch", "End switch...")
    $file = FileOpen($Artikel, 0)

    ; Check if file opened for reading OK
    If $file = -1 Then
    MsgBox(0, "Fehler", "Die Datei " & $Artikel & "kann nicht geöffnet werden")
    MsgBox(0, "Error", "Unable to open file.")
    Exit
    EndIf

    ; Read in lines of text until the EOF is reached
    While 1
    $line = FileReadLine($file)
    If @error = -1 Then ExitLoop
    ;MsgBox(0, "Line read:", $line)
    $oWordApp = _WordCreate("")
    $oDoc = _WordDocOpen($oWordApp, $line)
    _WordDocPrint($oDoc, 0)
    _WordQuit($oWordApp, 0)
    WEnd

    FileClose($file)


    MsgBox(0, "GUI Event", "Protokolle wurden gedruckt!")
    EndFunc ;==>OKButton

    Func CLOSEClicked()
    ;Note: at this point @GUI_CTRLID would equal $GUI_EVENT_CLOSE,
    ;and @GUI_WINHANDLE would equal $mainwindow
    MsgBox(0, "Programm beenden", "Programm wird beendet!...")
    Exit
    EndFunc ;==>CLOSEClicked

    3 Mal editiert, zuletzt von ripple (30. September 2009 um 13:37)

  • Beim mir funktionierts ??
    Was kriegst du den für einen fehler?

    lg SubZero ;)
    ==========================================================================

    "Der Computer ist die logische Weiterentwicklung des Menschen: Intelligenz ohne Moral."

  • Hallo ripple,

    hab mich bisher noch nicht mit WordAutomation mithilfe von AutoIt beschäftigt, aber müsste dieser Ausschnitt:

    [autoit]

    While 1
    $line = FileReadLine($file)
    If @error = -1 Then ExitLoop
    ;MsgBox(0, "Line read:", $line)
    $oWordApp = _WordCreate("")
    $oDoc = _WordDocOpen($oWordApp, $line)
    _WordDocPrint($oDoc, 0)
    _WordQuit($oWordApp, 0)
    WEnd

    [/autoit]

    nicht so funktionieren:

    [autoit]


    While 1
    $line = FileReadLine($file)
    If @error = -1 Then ExitLoop
    ;MsgBox(0, "Line read:", $line)
    WEnd
    $oWordApp = _WordCreate("")
    $oDoc = _WordDocOpen($oWordApp, $line)
    _WordDocPrint($oDoc, 0)
    _WordQuit($oWordApp, 0)

    [/autoit]

    bei deiner Lösung erstellst du ja mit jeder eingelesenen Zeile eine neue Wordinstanz und in dieser erzeugst du ein leeres Dokument, druckst es aus und beendest Word. Das wird bei meiner Lösung alles im gleichen Dokument erledigt.
    Auch solltest du mit dem TaskManager vor dem Testen des Programms schauen ob wirklich keine Wordinstanz offen ist, da es sonst zu Effekten kommen kann, die mit deinem aktuellen Programmstand gar nichts mehr zu tun haben.

    mfg (Auto)Bert

  • ich dachte du kannst die exe garnicht starten ja habe den gleichen fehler wie du
    Sorry wegen der verwirrung ;(

    lg SubZero ;)
    ==========================================================================

    "Der Computer ist die logische Weiterentwicklung des Menschen: Intelligenz ohne Moral."

  • Danke für eure Hilfe, hab eine Lösung gefunden
    hab den Aufruf geändert in

    $Auswahl = GUICtrlRead($Art, 1)

    Plötlich gings.
    den vorschlag mit den Wordinstanzen schau ich micr mal an , Sieht gut aus


    Dein Aufruf (Autobert) geht für meine Zwecke leider nicht.
    Ich möchte ja alle Dateien die in der TXT Datei mit Pfad gelistet sin ausdrucken
    bis das Ende der Datei erreicht ist.
    Dann wird die schleife verlassen

    Aber du hast Recht mit dem mehrfacchen Wordinstanzen hier ist eine bessere Lösung

    $oWordApp = _WordCreate("")

    While 1
    $line = FileReadLine($file)
    If @error = -1 Then ExitLoop

    $oDoc = _WordDocOpen($oWordApp, $line)
    _WordDocPrint($oDoc, 0)

    WEnd

    _WordQuit($oWordApp, 0)


    Gruß
    Bernd


    Danke

    Allen ;)

    2 Mal editiert, zuletzt von ripple (30. September 2009 um 13:51)