GuictrlSetData bzw. FilewriteLine Problem

  • Hi, ich hab nen Problem und zwar: Ich hab nen FileopenDialog, mit dem eine Datei ausgewählt wird und danach wird das ganze über Springsplit geteilt, sodass nurnoch der Dateiname übrig bleibt.
    Danach wird das ganze über GuiCtrlSetData eingetragen. Wenn ich das ganze nun in meine Datei über Filewriteline schreibe, bleibt der alte eintrag erhalten z.B. früher stand in der Datei lang.lng dann sollte der eintrag ger.lng aus der InputBox geschrieben werden, leider bleibt in der Datei trozdem lang.lng stehen.
    Woran kann das liegen? Ohne StringSplit gehts auch nicht. Meine überlegung ist, das Der FileOpenDialog nicht richtig übernommen wird
    PS: Arbeite eig viel mit Filewriteline und das Prob is das erste mal.
    PPS: Hier is der Code

    Spoiler anzeigen
    [autoit]

    #include
    #notrayicon
    global $minVal = 10, $maxVal = 255

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

    GUISetState()

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

    #Region ### START Koda GUI section ### Form=
    $Form1_1 = GUICreate("Settings", 218, 480, 193, 125)
    $Group1 = GUICtrlCreateGroup("Tasten", 8, 8, 201, 297)
    $Input1 = GUICtrlCreateInput(FIlereadline("Settings.conf", 2), 16, 32, 89, 21)
    $Input2 = GUICtrlCreateInput(FIlereadline("Settings.conf", 3), 16, 56, 89, 21)
    $Input3 = GUICtrlCreateInput(FIlereadline("Settings.conf", 4), 16, 80, 89, 21)
    $Input4 = GUICtrlCreateInput(FIlereadline("Settings.conf", 5), 16, 104, 89, 21)
    $Input5 = GUICtrlCreateInput(FIlereadline("Settings.conf", 6), 16, 128, 89, 21)
    $Input6 = GUICtrlCreateInput(FIlereadline("Settings.conf", 7), 16, 152, 89, 21)
    $Input7 = GUICtrlCreateInput(FIlereadline("Settings.conf", 8), 16, 176, 89, 21)
    $Input8 = GUICtrlCreateInput(FIlereadline("Settings.conf", 9), 16, 200, 89, 21)
    $Input9 = GUICtrlCreateInput(FIlereadline("Settings.conf", 10), 16, 224, 89, 21)
    $Input10 = GUICtrlCreateInput(FIlereadline("Settings.conf", 11), 16, 248, 89, 21)
    $Input11 = GUICtrlCreateInput(FIlereadline("Settings.conf", 12), 16, 272, 89, 21)
    $Label1 = GUICtrlCreateLabel("lauter", 112, 40, 30, 17)
    $Label2 = GUICtrlCreateLabel("leiser", 112, 64, 28, 17)
    $Label3 = GUICtrlCreateLabel("lautlos", 112, 88, 34, 17)
    $Label4 = GUICtrlCreateLabel("Play", 112, 112, 24, 17)
    $Label5 = GUICtrlCreateLabel("Stop", 112, 136, 26, 17)
    $Label6 = GUICtrlCreateLabel("Pause", 112, 160, 34, 17)
    $Label7 = GUICtrlCreateLabel("Datei öffnen", 112, 184, 62, 17)
    $Label8 = GUICtrlCreateLabel("Radio", 112, 208, 32, 17)
    $Label9 = GUICtrlCreateLabel("Youtube", 112, 232, 44, 17)
    $Label10 = GUICtrlCreateLabel("unsichtbar", 112, 256, 53, 17)
    $Label11 = GUICtrlCreateLabel("sichtbar s.u.", 112, 280, 63, 17)
    GUICtrlCreateGroup("", -99, -99, 1, 1)
    $Group2 = GUICtrlCreateGroup("Sprache", 8, 310, 201, 65)
    $lang = GuictrlcreateInput(Filereadline("Settings.conf", 16), 14, 335, 89, 21)
    $select = GuictrlcreateButton("Auswählen", 112, 335, 75, 21, 0)
    GUICtrlCreateGroup("", -99, -99, 1, 1)
    $Group2 = GUICtrlCreateGroup("Sichtbarkeit", 8, 380, 201, 65)
    $visible = GUICtrlCreateInput(Filereadline("Settings.conf", 14), 16, 405, 89, 21)
    $Label12 = GUICtrlCreateLabel("zwischen 10 - 255", 112, 413, 90, 17)
    GUICtrlCreateGroup("", -99, -99, 1, 1)
    $Button1 = GUICtrlCreateButton("Abbrechen", 8, 450, 75, 25, 0)
    $Button2 = GUICtrlCreateButton("Speichern", 134, 450, 75, 25, 0)

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

    GUICtrlSetLimit(-1, 3, 2)

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

    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $select
    $sprache = FileOpenDialog("SprachDatei", @Scriptdir & "/", "SprachDateien (*.lng; *.lang)")
    $split = StringSplit($sprache, "\")
    $lng = Guictrlsetdata($lang, $split[$split[0]])
    Case $GUI_EVENT_CLOSE

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

    Dim $iMsgBoxAnswer
    $iMsgBoxAnswer = MsgBox(36,"Speichern?","Möchten Sie die Änderungen speichern? Wenn nicht, gehen sie verloren.")
    Select
    Case $iMsgBoxAnswer = 6 ;Yes
    $read = GUICtrlRead($visible)
    If $read < $minVal Or $read > $maxVal Then
    MSGBox(-1, "Zahl außer Reichweite", "Die eingegebene Zahl ist außer Reichweite, bitte geben Sie eine Zahl zwischen 10 und 255 ein!")

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

    Else
    Filedelete("settings.conf")
    FilewriteLine("Settings.conf", "[Hotkey´s]" & @CRLF)
    FilewriteLine("Settings.conf", Guictrlread($Input1) & @CRLF)
    FilewriteLine("Settings.conf", Guictrlread($Input2) & @CRLF)
    FilewriteLine("Settings.conf", Guictrlread($Input3) & @CRLF)
    FilewriteLine("Settings.conf", Guictrlread($Input4) & @CRLF)
    FilewriteLine("Settings.conf", Guictrlread($Input5) & @CRLF)
    FilewriteLine("Settings.conf", Guictrlread($Input6) & @CRLF)
    FilewriteLine("Settings.conf", Guictrlread($Input7) & @CRLF)
    FilewriteLine("Settings.conf", Guictrlread($Input8) & @CRLF)
    FilewriteLine("Settings.conf", Guictrlread($Input9) & @CRLF)
    Filewriteline("Settings.conf", Guictrlread($Input10) & @CRLF)
    Filewriteline("Settings.conf", Guictrlread($Input11) & @CRLF)
    FilewriteLine("Settings.conf", "[Visible]" & @CRLF)
    FilewriteLine("Settings.conf", Guictrlread($Visible) & @CRLF)
    FilewriteLine("Settings.conf", "[lang]" & @CRLF)
    FilewriteLine("Settings.conf", Guictrlread($lang)) & @CRLF)
    WinSetTrans("NextGenPlayer", "", Filereadline("Settings.conf", 14))
    EndIf
    Case $iMsgBoxAnswer = 7 ;No
    Exit
    EndSelect
    Case $BUtton2
    $read = GUICtrlRead($visible)
    If $read < $minVal Or $read > $maxVal Then
    MSGBox(-1, "Zahl außer Reichweite", "Die eingegebene Zahl ist außer Reichweite, bitte geben Sie eine Zahl zwischen 10 und 255 ein!")

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

    Else
    Filedelete("settings.conf")
    FilewriteLine("Settings.conf", "[Hotkey´s]" & @CRLF)
    FilewriteLine("Settings.conf", Guictrlread($Input1) & @CRLF)
    FilewriteLine("Settings.conf", Guictrlread($Input2) & @CRLF)
    FilewriteLine("Settings.conf", Guictrlread($Input3) & @CRLF)
    FilewriteLine("Settings.conf", Guictrlread($Input4) & @CRLF)
    FilewriteLine("Settings.conf", Guictrlread($Input5) & @CRLF)
    FilewriteLine("Settings.conf", Guictrlread($Input6) & @CRLF)
    FilewriteLine("Settings.conf", Guictrlread($Input7) & @CRLF)
    FilewriteLine("Settings.conf", Guictrlread($Input8) & @CRLF)
    FilewriteLine("Settings.conf", Guictrlread($Input9) & @CRLF)
    Filewriteline("Settings.conf", Guictrlread($Input10) & @CRLF)
    Filewriteline("Settings.conf", Guictrlread($Input11) & @CRLF)
    FilewriteLine("Settings.conf", "[Visible]" & @CRLF)
    FilewriteLine("Settings.conf", Guictrlread($Visible) & @CRLF)
    FilewriteLine("Settings.conf", "[lang]" & @CRLF)
    FilewriteLine("Settings.conf", GuictrlRead($lang) & @CRLF)
    WinSetTrans("NextGenPlayer", "", Filereadline("Settings.conf", 14))

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

    EndIf
    Exit

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

    Case $Button1
    Dim $iMsgBoxAnswer
    $iMsgBoxAnswer = MsgBox(36,"Speichern?","Möchten Sie die änderungen speichern? Wenn nicht, gehen sie verloren.")
    Select
    Case $iMsgBoxAnswer = 6 ;Yes
    $read = GUICtrlRead($visible)
    If $read < $minVal Or $read > $maxVal Then
    MsgBox(64,"Zahl inkorrekt","Die Zahl darf nur zwischen 10 und 255 sein! " & @CRLF & "Bitte geben Sie eine Andere ein.")
    Else
    Filedelete("settings.conf")
    FilewriteLine("Settings.conf", "[Hotkey´s]" & @CRLF)
    FilewriteLine("Settings.conf", Guictrlread($Input1) & @CRLF)
    FilewriteLine("Settings.conf", Guictrlread($Input2) & @CRLF)
    FilewriteLine("Settings.conf", Guictrlread($Input3) & @CRLF)
    FilewriteLine("Settings.conf", Guictrlread($Input4) & @CRLF)
    FilewriteLine("Settings.conf", Guictrlread($Input5) & @CRLF)
    FilewriteLine("Settings.conf", Guictrlread($Input6) & @CRLF)
    FilewriteLine("Settings.conf", Guictrlread($Input7) & @CRLF)
    FilewriteLine("Settings.conf", Guictrlread($Input8) & @CRLF)
    FilewriteLine("Settings.conf", Guictrlread($Input9) & @CRLF)
    Filewriteline("Settings.conf", Guictrlread($Input10) & @CRLF)
    Filewriteline("Settings.conf", Guictrlread($Input11) & @CRLF)
    FilewriteLine("Settings.conf", "[Visible]" & @CRLF)
    FilewriteLine("Settings.conf", Guictrlread($Visible) & @CRLF)
    FilewriteLine("Settings.conf", "[lang]" & @CRLF)
    FilewriteLine("Settings.conf", GuiCtrlRead($lang) & @CRLF)
    WinSetTrans("NextGenPlayer", "", Filereadline("Settings.conf", 14))
    Exit
    EndIf
    Case $iMsgBoxAnswer = 7 ;No
    Exit
    EndSelect
    ;Exit
    EndSwitch
    WEnd

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

    Einmal editiert, zuletzt von Leon (31. Januar 2010 um 20:17)

  • Hallo Leon,

    üblicherweise werden Dateien vor dem Lesen/Schreiben geöfnet und danach wieder geschlossen. Versuch es als einmal so:

    Spoiler anzeigen
    [autoit]

    #include <GuiConstants.au3>
    #NoTrayIcon
    Global $minVal = 10, $maxVal = 255

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

    GUISetState()

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

    Global $sSettings = @ScriptDir & "\settings.conf", $hFile

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

    #Region ### START Koda GUI section ### Form=
    $hFile = FileOpen($sSettings, 0)
    $Form1_1 = GUICreate("Settings", 218, 480, 193, 125)
    $Group1 = GUICtrlCreateGroup("Tasten", 8, 8, 201, 297)
    Global $Input1 = GUICtrlCreateInput(FileReadLine($hFile, 2), 16, 32, 89, 21)
    Global $Input2 = GUICtrlCreateInput(FileReadLine($hFile, 3), 16, 56, 89, 21)
    Global $Input3 = GUICtrlCreateInput(FileReadLine($hFile, 4), 16, 80, 89, 21)
    Global $Input4 = GUICtrlCreateInput(FileReadLine($hFile, 5), 16, 104, 89, 21)
    Global $Input5 = GUICtrlCreateInput(FileReadLine($hFile, 6), 16, 128, 89, 21)
    Global $Input6 = GUICtrlCreateInput(FileReadLine($hFile, 7), 16, 152, 89, 21)
    Global $Input7 = GUICtrlCreateInput(FileReadLine($hFile, 8), 16, 176, 89, 21)
    Global $Input8 = GUICtrlCreateInput(FileReadLine($hFile, 9), 16, 200, 89, 21)
    Global $Input9 = GUICtrlCreateInput(FileReadLine($hFile, 10), 16, 224, 89, 21)
    Global $Input10 = GUICtrlCreateInput(FileReadLine($hFile, 11), 16, 248, 89, 21)
    Global $Input11 = GUICtrlCreateInput(FileReadLine($hFile, 12), 16, 272, 89, 21)
    $Label1 = GUICtrlCreateLabel("lauter", 112, 40, 30, 17)
    $Label2 = GUICtrlCreateLabel("leiser", 112, 64, 28, 17)
    $Label3 = GUICtrlCreateLabel("lautlos", 112, 88, 34, 17)
    $Label4 = GUICtrlCreateLabel("Play", 112, 112, 24, 17)
    $Label5 = GUICtrlCreateLabel("Stop", 112, 136, 26, 17)
    $Label6 = GUICtrlCreateLabel("Pause", 112, 160, 34, 17)
    $Label7 = GUICtrlCreateLabel("Datei öffnen", 112, 184, 62, 17)
    $Label8 = GUICtrlCreateLabel("Radio", 112, 208, 32, 17)
    $Label9 = GUICtrlCreateLabel("Youtube", 112, 232, 44, 17)
    $Label10 = GUICtrlCreateLabel("unsichtbar", 112, 256, 53, 17)
    $Label11 = GUICtrlCreateLabel("sichtbar s.u.", 112, 280, 63, 17)
    GUICtrlCreateGroup("", -99, -99, 1, 1)
    $Group2 = GUICtrlCreateGroup("Sprache", 8, 310, 201, 65)
    $lang = GUICtrlCreateInput(FileReadLine($hFile, 16), 14, 335, 89, 21)
    $select = GUICtrlCreateButton("Auswählen", 112, 335, 75, 21, 0)
    GUICtrlCreateGroup("", -99, -99, 1, 1)
    $Group2 = GUICtrlCreateGroup("Sichtbarkeit", 8, 380, 201, 65)
    $visible = GUICtrlCreateInput(FileReadLine($hFile, 14), 16, 405, 89, 21)
    $Label12 = GUICtrlCreateLabel("zwischen 10 - 255", 112, 413, 90, 17)
    GUICtrlCreateGroup("", -99, -99, 1, 1)
    $Button1 = GUICtrlCreateButton("Abbrechen", 8, 450, 75, 25, 0)
    $Button2 = GUICtrlCreateButton("Speichern", 134, 450, 75, 25, 0)

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

    GUICtrlSetLimit(-1, 3, 2)
    FileClose($hFile)
    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $select
    $sprache = FileOpenDialog("SprachDatei", @ScriptDir & "/", "SprachDateien (*.lng; *.lang)")
    $split = StringSplit($sprache, "\")
    $lng = GUICtrlSetData($lang, $split[$split[0]])
    Case $GUI_EVENT_CLOSE

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

    Dim $iMsgBoxAnswer
    $iMsgBoxAnswer = MsgBox(36, "Speichern?", "Möchten Sie die Änderungen speichern? Wenn nicht, gehen sie verloren.")
    Switch $iMsgBoxAnswer
    Case 6 ;Yes
    If _saveConfig() = 0 Then Exit
    Case 7 ;No
    Exit
    EndSwitch
    Case $Button2
    If _saveConfig() = 0 Then Exit

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

    Case $Button1
    Dim $iMsgBoxAnswer
    $iMsgBoxAnswer = MsgBox(36, "Speichern?", "Möchten Sie die änderungen speichern? Wenn nicht, gehen sie verloren.")
    Switch $iMsgBoxAnswer
    Case 6
    If _saveConfig() = 0 Then Exit

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

    Case 7 ;No
    Exit
    EndSwitch
    ;Exit
    EndSwitch
    WEnd

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

    Func _saveConfig()
    Local $sret
    $read = GUICtrlRead($visible)
    If $read < $minVal Or $read > $maxVal Then
    MsgBox(-1, "Zahl außer Reichweite", "Die eingegebene Zahl ist außer Reichweite, bitte geben Sie eine Zahl zwischen 10 und 255 ein!")
    $sret = 1
    Else
    ; FileDelete($sSettings)
    $hFile = FileOpen($sSettings, 2)
    FileWriteLine($hFile, "[Hotkey´s]" & @CRLF)
    FileWriteLine($hFile, GUICtrlRead($Input1) & @CRLF)
    FileWriteLine($hFile, GUICtrlRead($Input2) & @CRLF)
    FileWriteLine($hFile, GUICtrlRead($Input3) & @CRLF)
    FileWriteLine($hFile, GUICtrlRead($Input4) & @CRLF)
    FileWriteLine($hFile, GUICtrlRead($Input5) & @CRLF)
    FileWriteLine($hFile, GUICtrlRead($Input6) & @CRLF)
    FileWriteLine($hFile, GUICtrlRead($Input7) & @CRLF)
    FileWriteLine($hFile, GUICtrlRead($Input8) & @CRLF)
    FileWriteLine($hFile, GUICtrlRead($Input9) & @CRLF)
    FileWriteLine($hFile, GUICtrlRead($Input10) & @CRLF)
    FileWriteLine($hFile, GUICtrlRead($Input11) & @CRLF)
    FileWriteLine($hFile, "[Visible]" & @CRLF)
    FileWriteLine($hFile, GUICtrlRead($visible) & @CRLF)
    FileWriteLine($hFile, "[lang]" & @CRLF)
    FileWriteLine($hFile, GUICtrlRead($lang) & @CRLF)
    FileClose($hFile)
    $hFile = FileOpen($sSettings, 0)

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

    WinSetTrans("NextGenPlayer", "", FileReadLine($hFile, 14))
    FileClose($hFile)
    $sret = 0
    EndIf
    Return $sret
    EndFunc ;==>_saveConfig

    [/autoit]

    des weiteren ist es sinnvoll wiederkehrende Aufgben (hier speichern) in eine func auszulagern und diese dann an den verschiedenen Stellen aufzurufen. Viel Spass mit dem Skript,

    mfg (Auto)Bert

  • Danke Autobert, hat perfekt funktioniert!

    Einmal editiert, zuletzt von Leon (31. Januar 2010 um 20:17)