Problem mit aktuellem script.

  • Hi zusamm
    Ich mach hier mal nen neuen Thread dazu auf, da es sonst im alten zu unbersichtlich wird.

    Also es geht um flgendes script:

    Spoiler anzeigen
    [autoit]

    #include <GUIConstantsEx.au3>
    #include <IE.au3>
    #include <GUIListBox.au3>
    #include <WindowsConstants.au3>
    #include <ListBoxConstants.au3>
    #include <File.au3>

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

    _Start ()
    Func _Start ()
    #Region ### START Koda GUI section ### Form=
    $Form1 = GUICreate("Web-Helfer", 638, 441, 166, 122)
    $List1 = GUICtrlCreateList("", 16, 72, 225, 292, BitOR($LBS_SORT,$LBS_STANDARD,$LBS_EXTENDEDSEL,$WS_VSCROLL,$WS_BORDER))
    GUICtrlSetData(-1, "www.autoit.de")
    GUICtrlCreateLabel("Web-Helfer 1.0", 8, 0, 229, 41)
    GUICtrlSetFont(-1, 24, 800, 4, "Arial")
    GUICtrlSetColor(-1, 0x0000FF)
    $Input1 = GUICtrlCreateInput("", 264, 96, 353, 21)
    GUICtrlCreateLabel("Seite eingeben:", 264, 72, 105, 20)
    GUICtrlSetFont(-1, 10, 800, 0, "Arial")
    GUICtrlSetColor(-1, 0x0000FF)
    GUICtrlCreateLabel("Version 1.0", 568, 416, 57, 17)
    GUICtrlSetColor(-1, 0x0000FF)
    GUICtrlCreateLabel("Made by:", 8, 416, 202, 17)
    GUICtrlSetColor(-1, 0x0000FF)
    $Button1 = GUICtrlCreateButton("Web-Seite hinzufügen", 264, 120, 137, 25, 0)
    $Button2 = GUICtrlCreateButton("Ausgewählte Seite öffnen", 264, 200, 137, 25, 0)
    $Button3 = GUICtrlCreateButton("Seite sofort öffnen", 264, 280, 137, 25, 0)
    $Button5 = GUICtrlCreateButton("Liste Laden", 408, 344, 129, 25, 0)
    $Button6 = GUICtrlCreateButton("Eintrag löschen", 72, 376, 89, 25, 0)
    GUICtrlCreateLabel("Fügt die eingegebene Seite", 264, 152, 134, 17)
    GUICtrlSetColor(-1, 0x0000FF)
    GUICtrlCreateLabel("der Liste hinzu.", 264, 168, 75, 17)
    GUICtrlSetColor(-1, 0x0000FF)
    GUICtrlCreateLabel("Öffnet die Seite sofort.", 264, 312, 109, 17)
    GUICtrlSetColor(-1, 0x0000FF)
    GUICtrlCreateLabel("Öffnet die in der Liste", 264, 232, 104, 17)
    GUICtrlSetColor(-1, 0x0000FF)
    GUICtrlCreateLabel("ausgewählte Seite.", 264, 248, 94, 17)
    GUICtrlSetColor(-1, 0x0000FF)
    GUICtrlCreateGroup("Liste", 8, 48, 241, 361)
    GUICtrlSetFont(-1, 8, 800, 0, "MS Sans Serif")
    GUICtrlSetColor(-1, 0x0000FF)
    GUICtrlCreateGroup("", -99, -99, 1, 1)
    GUICtrlCreateGroup("Seite hinzufügen / öffnen", 256, 48, 369, 361)
    GUICtrlSetFont(-1, 8, 800, 0, "MS Sans Serif")
    GUICtrlSetColor(-1, 0x0000FF)
    $Button4 = GUICtrlCreateButton("Speichern", 264, 344, 137, 25, 0)
    GUICtrlCreateLabel("Speichert die Liste ab.", 264, 376, 109, 17)
    GUICtrlSetColor(-1, 0x0000FF)
    GUICtrlCreateLabel("Läd die Liste", 408, 376, 64, 17)
    GUICtrlSetColor(-1, 0x0000FF)
    GUICtrlCreateGroup("", -99, -99, 1, 1)
    $Button7 = GUICtrlCreateButton("Optionen", 456, 416, 105, 17, 0)
    GUISetState(@SW_SHOW, $Form1)
    #EndRegion ### END Koda GUI section ###

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

    FileOpen (@ScriptDir & "\Data\Settings\Settings.dat", 0)
    $AutoSaveRead = FileReadLine (@ScriptDir & "\Data\Settings\Settings.dat", 4)
    If $AutoSaveRead = "AutoLoad = True" Then
    GUICtrlSetData ($List1, "")
    $FileRead = FileRead (@ScriptDir & "\Data\SiteList\SiteList.dat")
    GUICtrlSetData ($List1, $FileRead)
    EndIf

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

    While 1
    $aMsg = GUIGetMsg()
    Switch $aMsg
    Case $GUI_EVENT_CLOSE
    FileOpen (@ScriptDir & "\Data\Settings\Settings.dat", 0)
    $AutoSaveRead = FileReadLine (@ScriptDir & "\Data\Settings\Settings.dat", 1)
    If $AutoSaveRead = "AutoSave = True" Then
    FileOpen (@ScriptDir & "\Data\SiteList\SiteList.dat", 2)
    $List1Count = _GUICtrlListBox_GetCount ($List1)
    For $i = 0 To $List1Count
    FileWrite (@ScriptDir & "\Data\SiteList\SiteList.dat", _GUICtrlListBox_GetText ($List1, $i) & "|")
    Next
    EndIf
    FileOpen (@ScriptDir & "\Data\Settings\Settings.dat", 0)
    $AutoSaveRead = FileReadLine (@ScriptDir & "\Data\Settings\Settings.dat", 3)
    If $AutoSaveRead = "EndQuest = True" Then
    $MsgBox1 = MsgBox (4+32, "Beenden", "Soll das Programm wirklich beendet werden?")
    If $MsgBox1 = 6 Then
    Exit
    EndIf
    Else
    Exit
    EndIf
    Case $Button1
    $Input1Read = GUICtrlRead ($Input1)
    GUICtrlSetData ($List1, $Input1Read)
    GUICtrlSetData ($Input1, "")
    FileOpen (@ScriptDir & "\Data\Settings\Settings.dat", 0)
    $AutoSaveRead = FileReadLine (@ScriptDir & "\Data\Settings\Settings.dat", 2)
    If $AutoSaveRead = "NewSiteOpen = True" Then
    _IECreate ($Input1Read)
    EndIf
    Case $Button2
    $List1Read = GUICtrlRead ($List1)
    _IECreate ($List1Read)
    Case $Button3
    $List1Read = GUICtrlRead ($List1)
    _IECreate ($Input1Read)
    Case $Button4
    FileOpen (@ScriptDir & "\Data\SiteList\SiteList.dat", 2)
    $List1Count = _GUICtrlListBox_GetCount ($List1)
    For $i = 0 To $List1Count
    FileWrite (@ScriptDir & "\Data\SiteList\SiteList.dat", _GUICtrlListBox_GetText ($List1, $i) & "|")
    Next
    Case $Button6
    $List1CurSel = _GUICtrlListBox_GetCurSel ($List1)
    _GUICtrlListBox_DeleteString ($List1, $List1CurSel)
    Case $Button5
    GUICtrlSetData ($List1, "")
    $FileRead = FileRead (@ScriptDir & "\Data\SiteList\SiteList.dat")
    GUICtrlSetData ($List1, $FileRead)
    Case $Button7
    _Opt ()
    EndSwitch
    WEnd
    EndFunc ;==> _Start

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

    Func _Opt ()
    #Region ### START Koda GUI section ###
    $Form2 = GUICreate("Optionen", 237, 380, 812, 123)
    GUICtrlCreateGroup("Optionen", 11, 7, 209, 361)
    GUICtrlCreateGroup("", -99, -99, 1, 1)
    $Checkbox1 = GUICtrlCreateCheckbox("Automatisch speichern", 18, 47, 145, 17)
    GUICtrlSetFont(-1, 8, 800, 0, "MS Sans Serif")
    GUICtrlCreateLabel("Optionen:", 18, 23, 66, 20)
    GUICtrlSetFont(-1, 10, 800, 0, "Arial")
    GUICtrlSetColor(-1, 0x0000FF)
    $Checkbox2 = GUICtrlCreateCheckbox("Neue Seite sofort öffnen", 18, 79, 200, 17)
    GUICtrlSetFont(-1, 8, 800, 0, "MS Sans Serif")
    $Checkbox3 = GUICtrlCreateCheckbox("Beenden abfragen *", 18, 111, 137, 17)
    GUICtrlSetFont(-1, 8, 800, 0, "MS Sans Serif")
    $Checkbox4 = GUICtrlCreateCheckbox("Automatisch Laden", 18, 143, 177, 17)
    GUICtrlSetFont(-1, 8, 800, 0, "MS Sans Serif")
    GUICtrlCreateLabel("* Fragt, ob wirklich beendet", 18, 327, 133, 17)
    GUICtrlSetColor(-1, 0x0000FF)
    GUICtrlCreateLabel("werden soll, oder nicht.", 26, 343, 113, 17)
    GUICtrlSetColor(-1, 0x0000FF)
    $Button1 = GUICtrlCreateButton("Übernehmen", 16, 296, 105, 25, 0)
    GUISetState(@SW_SHOW, $Form2)
    #EndRegion ### END Koda GUI section ###

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

    ; Checkboxen Check ==> Start
    ; Checkbox1
    FileOpen (@ScriptDir & "\Data\Settings\Settings.dat", 0)
    $SettRead1 = FileReadLine (@ScriptDir & "\Data\Settings\Settings.dat", 1)
    $SettRead2 = FileReadLine (@ScriptDir & "\Data\Settings\Settings.dat", 2)
    $SettRead3 = FileReadLine (@ScriptDir & "\Data\Settings\Settings.dat", 3)
    $SettRead4 = FileReadLine (@ScriptDir & "\Data\Settings\Settings.dat", 4)
    If $SettRead1 = "AutoSave = True" Then
    GUICtrlSetState ($Checkbox1, $GUI_CHECKED)
    ElseIf $SettRead1 = "AutoSave = False" Then
    GUICtrlSetState ($Checkbox1, $GUI_UNCHECKED)
    EndIf
    ; Checkbox2
    If $SettRead2 = "NewSiteOpen = True" Then
    GUICtrlSetState ($Checkbox2, $GUI_CHECKED)
    ElseIf $SettRead2 = "NewSiteOpen = False" Then
    GUICtrlSetState ($Checkbox2, $GUI_UNCHECKED)
    EndIf
    ; Checkbox3
    If $SettRead3 = "EndQuest = True" Then
    GUICtrlSetState ($Checkbox3, $GUI_CHECKED)
    ElseIf $SettRead3 = "EndQuest = False" Then
    GUICtrlSetState ($Checkbox3, $GUI_UNCHECKED)
    EndIf
    ; Checkbox4
    If $SettRead4 = "AutoLoad = True" Then
    GUICtrlSetState ($Checkbox4, $GUI_CHECKED)
    ElseIf $SettRead4 = "AutoLoad = False" Then
    GUICtrlSetState ($Checkbox4, $GUI_UNCHECKED)
    EndIf
    ; Checkbox Check ==> End

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

    While 1
    $bMsg = GUIGetMsg()
    Switch $bMsg
    Case $GUI_EVENT_CLOSE
    GUISetState (@SW_HIDE, $Form2)
    ExitLoop
    Case $Button1
    $Check1Read = GUICtrlRead ($Checkbox1)
    $Check2Read = GUICtrlRead ($Checkbox2)
    $Check3Read = GUICtrlRead ($Checkbox3)
    $Check4Read = GUICtrlRead ($Checkbox4)
    FileOpen (@ScriptDir & "\Data\Settings\Settings.dat", 2)
    If $Check1Read = $GUI_CHECKED Then
    FileWriteLine (@ScriptDir & "\Data\Settings\Settings.dat", "AutoSave = True")
    Else
    FileWriteLine (@ScriptDir & "\Data\Settings\Settings.dat", "AutoSave = False")
    EndIf
    ; ---
    If $Check2Read = $GUI_CHECKED Then
    FileWriteLine (@ScriptDir & "\Data\Settings\Settings.dat", "NewSiteOpen = True")
    Else
    FileWriteLine (@ScriptDir & "\Data\Settings\Settings.dat", "NewSiteOpen = False")
    EndIf
    ; ---
    If $Check3Read = $GUI_CHECKED Then
    FileWriteLine (@ScriptDir & "\Data\Settings\Settings.dat", "EndQuest = True")
    Else
    FileWriteLine (@ScriptDir & "\Data\Settings\Settings.dat", "EndQuest = False")
    EndIf
    ; ---
    If $Check4Read = $GUI_CHECKED Then
    FileWriteLine (@ScriptDir & "\Data\Settings\Settings.dat", "AutoLoad = True")
    Else
    FileWriteLine (@ScriptDir & "\Data\Settings\Settings.dat", "AutoLoad = False")
    EndIf
    ; ---
    EndSwitch
    WEnd
    EndFunc ;==> _Opt

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


    So, hier habe ich folgendes Problem/Probleme:
    Problem #1:
    Wenn ich ddie Liste abspeichere, dann wird zu dem normalen Inhalt noch eine 0 hinten dran gehängt.
    Es geht dabei um diese Zeilen:

    [autoit]

    FileOpen (@ScriptDir & "\Data\SiteList\SiteList.dat", 2)
    $List1Count = _GUICtrlListBox_GetCount ($List1)
    For $i = 0 To $List1Count
    FileWrite (@ScriptDir & "\Data\SiteList\SiteList.dat", _GUICtrlListBox_GetText ($List1, $i) & "|")
    Next

    [/autoit]

    Problem #2:
    Dieses liegt wohl i.wo in den folgenden Zeilen:

    [autoit]


    FileOpen (@ScriptDir & "\Data\Settings\Settings.dat", 0)
    $AutoSaveRead = FileReadLine (@ScriptDir & "\Data\Settings\Settings.dat", 4)
    If $AutoSaveRead = "AutoLoad = True" Then
    GUICtrlSetData ($List1, "")
    $FileRead = FileRead (@ScriptDir & "\Data\SiteList\SiteList.dat")
    GUICtrlSetData ($List1, $FileRead)
    EndIf

    [/autoit]

    Hier wird nach dem Start des Programms überprüft, ob in der Datei Settings.dat der eintrag "AutoLoad = True" steht.
    Wenn ja, wird die List sofort nach dem Start des Programms geladen.

    Nun wird aber immer der erste eintrag in der Liste 2 mal geladen.

    Ihr könnts ja mal selbst testen, dann versteht ihr vllt was ich mein ^^


    Also, wäre wirklich super, wenn mir da einer weiter helfen könnte.

    Mfg

  • [autoit]

    FileOpen (@ScriptDir & "\Data\SiteList\SiteList.dat", 2)
    $List1Count = _GUICtrlListBox_GetCount ($List1)
    For $i = 0 To $List1Count -1
    FileWrite (@ScriptDir & "\Data\SiteList\SiteList.dat", _GUICtrlListBox_GetText ($List1, $i) & "|")
    Next

    [/autoit]

    Zum 1. Problem... geht das nicht so ? oder irre ich mich jetzt ?

  • was soll ich sagen...
    Einfach Perfekt :rofl:

    Diese kleine -1 hat beide Probleme auf einmal gelöst :D

    Vielen dank :thumbup:

  • Naja... kein Problem... weiss zwar nicht ganz warum es das 2. Problem auch löst, aber ist ja auch egal solange es geht ;)