Skript findet Variable Phatdangabe nicht

  • Ich weiß nicht was ich falsch mache. Ich bekomme keine richtige Fehlertmeldung die mir was nützet.

    Was in den txts steht ist egal wir sowiso alles zusamen gefügt in eine.


    Spoiler anzeigen
    [autoit]


    #include <GUIConstants.au3>
    ;***************************************************
    ;***************** Skriptschreiben *****************
    #Region ### START Koda GUI section ###
    $UpdatesF = GUICreate("Updates Service", 317, 171, Default, Default)
    GUISetFont(8, 800, 0, "MS Sans Serif")
    GUISetBkColor(0x3D95FF)
    $Pfad = @ScriptDir & '\UpdatesJM.txt'
    $UpdatesLI = GUICtrlCreateInput($Pfad, 16, 40, 265, 21)
    $Updates1 = GUICtrlCreateButton("Durchsuchen", 160, 72, 123, 25, 0)
    GUICtrlSetCursor (-1, 0)
    GUICtrlSetFont(-1, 8, 400, 4, "MS Sans Serif")
    $Updates2 = GUICtrlCreateButton("Fertig stellen", 160, 126, 123, 25, 0)
    GUICtrlSetCursor (-1, 0)
    $UpdatesL = GUICtrlCreateLabel("Wählen sie den das Update aus!", 16, 16, 159, 17)
    GUICtrlSetFont(-1, 10, 800, 0, "MS Sans Serif")
    GUICtrlSetColor(-1, 0x800000)
    GUISetState(@SW_HIDE)
    #EndRegion ### END Koda GUI section ###
    #Region ### START Koda GUI section ### Warten Form
    $wait = GUICreate("Bitte Warten", 201, 50, Default, Default) ;, BitOR($WS_CAPTION,$WS_POPUP,$WS_BORDER,$WS_CLIPSIBLINGS)) <---------- Geht auch nicht!!!!!!
    GUISetBkColor(0x3D95FF)
    $progressbar1 = GUICtrlCreateProgress(10, 10, 180, 20)
    GUISetState(@SW_HIDE)
    #EndRegion ### END Koda GUI section ###
    ;*********** Skriptschreiben Ende ******************
    ;***************************************************

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg

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

    ;####################################################
    Case $Updates1
    $reU = FileOpenDialog("Datei öffnen", @DesktopDir, "Alle Dateien (*.*)")
    If @error Then
    MsgBox(16, "Error" , "Es ist nichts ausgewählt!", 5)
    EndIf
    GUICtrlSetData($UpdatesLI, $reU)
    Case $Updates2
    GUISetState (@SW_SHOW, $wait)
    GUICtrlSetData($progressbar1, 1)
    GUICtrlSetData($wait, "Bitte warten...")
    $Updatepfhad = GuiCtrlRead($UpdatesLI )
    If FileExists(@ScriptDir & '\JtM.txt') Then
    FileDelete (@ScriptDir & "JtM.txt" )
    Else
    EndIf
    $file1TJ = FileOpen (@ScriptDir & "\sammlung.txt", 0 )
    If $file1TJ = -1 Then
    MsgBox(0, "Error", "Kann Datei nicht Öffnen!")
    Exit
    EndIf
    $AllLines1TJ = ""
    While 1
    $line1TJ = FileReadLine($file1TJ)
    If @error = -1 Then
    $file1TJ2 = FileOpen (@ScriptDir & "\Find.txt", 0 )
    If $file1TJ2 = -1 Then
    MsgBox(0, "Error", "Kann Datei nicht Öffnen!")
    Exit
    EndIf
    GUICtrlSetData($progressbar1, 35)
    FileWrite($oneJ, @CRLF )
    $AllLines1TJ2 = ""
    While 1
    $line1TJ2 = FileReadLine($file1TJ2)
    If @error = -1 Then
    Dim $phu = '"' & $Updatepfhad & '"'
    $file1TJ3 = FileOpen ($phu, 0 )
    If $file1TJ3 = -1 Then
    MsgBox(0, "Error", "Kann Datei nicht Öffnen!" & $phu)
    Exit
    EndIf
    GUICtrlSetData($progressbar1, 75)
    FileWrite($oneJ, @CRLF )
    $AllLines1TJ3 = ""
    While 1
    $line1TJ3 = FileReadLine($file1TJ3)
    If @error = -1 Then
    GUICtrlSetData($progressbar1, 100)
    Sleep (1000)
    StringTrimRight($AllLines1TJ3, 1)
    ExitLoop
    EndIf
    FileWrite($oneJ, $line1TJ3 & @CRLF )
    WEnd
    StringTrimRight($AllLines1TJ2, 1)
    ExitLoop
    EndIf
    FileWrite($oneJ, $line1TJ2 & @CRLF )
    WEnd
    StringTrimRight($AllLines1TJ, 1)
    ExitLoop
    EndIf
    $oneJ = @ScriptDir & "\JtM.txt"
    FileWrite($oneJ, $line1TJ & @CRLF )
    WEnd
    msgbox(0, "INFO", "JtM.txt ist Fertig, Sie sollten diese Jetzt umbenennen")
    GUISetState (@SW_HIDE, $wait)
    GUISetState (@SW_HIDE, $UpdatesF)
    GUISetState (@SW_SHOW, $Form1H)
    ;####################################################
    EndSwitch
    WEnd

    [/autoit]
  • Hallo skar,

    die Fehlermeldungen die ich bekomme sagen dass du vergessen hast die Variable Form1H zu deklarieren:

    Code
    C:\Programme\AutoIt3\Examples\Tests\TVarPath.au3(65,36) : WARNING: $oneJ: possibly used before declaration.
                        FileWrite($oneJ,
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
    C:\Programme\AutoIt3\Examples\Tests\TVarPath.au3(103,43) : WARNING: $Form1H: possibly used before declaration.
                GUISetState (@SW_SHOW, $Form1H)
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
    C:\Programme\AutoIt3\Examples\Tests\TVarPath.au3(103,43) : ERROR: $Form1H: undeclared global variable.
                GUISetState (@SW_SHOW, $Form1H)
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
    C:\Programme\AutoIt3\Examples\Tests\TVarPath.au3 - 1 error(s), 2 warning(s)

    Was es mit der variablen Pfadangabe auf sich hat kann man so nicht nachvollziehen, auch solltest du den Fehler etwas genauer beschreiben bzw. eingrenzen. Als erstes solltest du mut

    [autoit]

    Opt("MustDeclareVars",1)

    [/autoit]

    direkt nach den #INCLUDES sicherstellen, dass du keine Tippfehler hast. ConsoleWrite($DEINEVARIABLE & @CRLF) bzw. MSGBOXen können sehr hilfreich sein um den Variableninhalt zu püfen. Auch dieses Tut solltest du lesen,

    mfg (Auto)Bert

    Edit: geändertes Skript:

    Spoiler anzeigen
    [autoit]

    #include <GUIConstants.au3>

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

    ;Opt("MustDeclareVars",1)

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

    ;***************************************************
    ;***************** Skriptschreiben *****************
    #Region ### START Koda GUI section ###
    $UpdatesF = GUICreate("Updates Service", 317, 171, Default, Default)
    GUISetFont(8, 800, 0, "MS Sans Serif")
    GUISetBkColor(0x3D95FF)
    $Pfad = @ScriptDir & '\UpdatesJM.txt'
    $UpdatesLI = GUICtrlCreateInput($Pfad, 16, 40, 265, 21)
    $Updates1 = GUICtrlCreateButton("Durchsuchen", 160, 72, 123, 25, 0)
    GUICtrlSetCursor(-1, 0)
    GUICtrlSetFont(-1, 8, 400, 4, "MS Sans Serif")
    $Updates2 = GUICtrlCreateButton("Fertig stellen", 160, 126, 123, 25, 0)
    GUICtrlSetCursor(-1, 0)
    $UpdatesL = GUICtrlCreateLabel("Wählen sie den das Update aus!", 16, 16, 159, 17)
    GUICtrlSetFont(-1, 10, 800, 0, "MS Sans Serif")
    GUICtrlSetColor(-1, 0x800000)
    GUISetState(@SW_SHOW) ;war auf @SW_HIDE, Form wurde daher nie angezeigt
    #EndRegion ### END Koda GUI section ###
    #Region ### START Koda GUI section ### Warten Form
    $wait = GUICreate("Bitte Warten", 201, 50, Default, Default) ;, BitOR($WS_CAPTION,$WS_POPUP,$WS_BORDER,$WS_CLIPSIBLINGS)) <---------- Geht auch nicht!!!!!!
    GUISetBkColor(0x3D95FF)
    $progressbar1 = GUICtrlCreateProgress(10, 10, 180, 20)
    GUISetState(@SW_HIDE)
    #EndRegion ### END Koda GUI section ###
    ;*********** Skriptschreiben Ende ******************
    ;***************************************************

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg

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

    ;####################################################
    Case $Updates1
    $reU = FileOpenDialog("Datei öffnen", @DesktopDir, "Alle Dateien (*.*)")
    If @error Then
    MsgBox(16, "Error", "Es ist nichts ausgewählt!", 5)
    EndIf
    GUICtrlSetData($UpdatesLI, $reU)
    Case $Updates2
    GUISetState(@SW_SHOW, $wait)
    GUICtrlSetData($progressbar1, 1)
    GUICtrlSetData($wait, "Bitte warten...")
    $Updatepfhad = GUICtrlRead($UpdatesLI)
    If FileExists(@ScriptDir & '\JtM.txt') Then
    FileDelete(@ScriptDir & "JtM.txt")
    Else
    EndIf
    $file1TJ = FileOpen(@ScriptDir & "\sammlung.txt", 0)
    If $file1TJ = -1 Then
    MsgBox(0, "Error", "Kann Datei: " & @ScriptDir & "\sammlung.txt" & @CRLF & "nicht Öffnen!")
    Exit
    EndIf
    $AllLines1TJ = ""
    $oneJ = @ScriptDir & "\JtM.txt" ;<================== verschoben
    While 1
    $line1TJ = FileReadLine($file1TJ)
    If @error = -1 Then
    $file1TJ2 = FileOpen(@ScriptDir & "\Find.txt", 0)
    If $file1TJ2 = -1 Then
    MsgBox(0, "Error", "Kann Datei: " & @ScriptDir & "\Find.txt" & @CRLF & "nicht Öffnen!")
    Exit
    EndIf
    GUICtrlSetData($progressbar1, 35)
    FileWrite($oneJ, @CRLF)
    $AllLines1TJ2 = ""
    While 1
    $line1TJ2 = FileReadLine($file1TJ2)
    If @error = -1 Then
    Dim $phu = $Updatepfhad
    $file1TJ3 = FileOpen($phu, 0) ;<============= Hochkommas entfernt
    If $file1TJ3 = -1 Then
    MsgBox(0, "Error", "Kann Datei im Updatepfad" & $Updatepfhad & @CRLF & "nicht Öffnen!")
    Exit
    EndIf
    GUICtrlSetData($progressbar1, 75)
    FileWrite($oneJ, @CRLF)
    $AllLines1TJ3 = ""
    While 1
    $line1TJ3 = FileReadLine($file1TJ3)
    If @error = -1 Then
    GUICtrlSetData($progressbar1, 100)
    Sleep(1000)
    StringTrimRight($AllLines1TJ3, 1)
    ExitLoop
    EndIf
    FileWrite($oneJ, $line1TJ3 & @CRLF)
    WEnd
    StringTrimRight($AllLines1TJ2, 1)
    ExitLoop
    EndIf
    FileWrite($oneJ, $line1TJ2 & @CRLF)
    WEnd
    StringTrimRight($AllLines1TJ, 1)
    ExitLoop
    EndIf
    FileWrite($oneJ, $line1TJ & @CRLF)
    WEnd
    MsgBox(0, "INFO", "JtM.txt ist Fertig, Sie sollten diese Jetzt umbenennen")
    GUISetState(@SW_HIDE, $wait)
    GUISetState(@SW_HIDE, $UpdatesF)
    ;GUISetState (@SW_SHOW, $Form1H) ;<========== gibt es nicht
    ;####################################################
    EndSwitch
    WEnd

    [/autoit]

    Die wichtigsten Änderungen, die ich vorgenommen habe sind mit ;<====== gekennzeichnet. Viel Spaß damit ;) . Du solltest dir angewöhnen, Variablen zu deklarieren,
    mfg (Auto)Bert

    3 Mal editiert, zuletzt von AutoBert (1. Oktober 2009 um 18:06)

  • Vielen Dank. Ich denke die Hochkommas waren für mein Problem verantwortlich. Form1H Ist mein Hauptmenue. Doch es hätte nur unnötig den Quelltext verlängert. Deshalb lies ich es weg. Ich hab auch mitbekomen das Sie einige unnötige Leerzeilen entfernt haben. ^^ Ich werde die mal unterlassen zu machen.


    Sie haben oben einen Fehlercode, sowas würde mir helfen. Wo kan ich sowas über AutoIT finden. Debugermodus?