IniWrite Problem

  • Relativ simpel, es speichert nicht. Wenn ich statt $playlist z.B. "Elefant" nehme, funktioniert es, jedoch finde ich den Fehler an $playlist nicht.

    Spoiler anzeigen
    [autoit]

    #include <GUIConstants.au3>
    #include <Array.au3>
    #include <String.au3>
    #include <Sound.au3>
    #Include <GuiListBox.au3>
    #RequireAdmin

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

    Global $numbers[1]
    Opt("GUIOnEventMode", 1)
    $Form1 = GUICreate("Musix by mipez", 609, 303, 200, 126)
    GUISetOnEvent ( $GUI_EVENT_CLOSE, "_exit")
    $playlist = GUICtrlCreateList("", 376, 16, 209, 214)
    $volume = GUICtrlCreateSlider(16, 48, 337, 41)
    $fileadd = GUICtrlCreateButton("Add new File", 376, 248, 209, 33, 0)
    $play = GUICtrlCreateButton("Play", 128, 88, 81, 73, 0)
    GUICtrlSetFont(-1, 20, 400, 0, "MS Sans Serif")
    $pause = GUICtrlCreateButton("Pause", 32, 96, 81, 57, 0)
    GUICtrlSetFont(-1, 15, 400, 0, "MS Sans Serif")
    $stop = GUICtrlCreateButton("Stop", 224, 96, 81, 57, 0)
    GUICtrlSetFont(-1, 15, 400, 0, "MS Sans Serif")
    $save = GUICtrlCreateButton("Save Playlist", 24, 248, 161, 33, 0)
    $load = GUICtrlCreateButton("Load Playlist", 192, 248, 161, 33, 0)
    $labelnow = GUICtrlCreateLabel("Now:", 32, 176, 53, 28)
    GUICtrlSetFont(-1, 15, 400, 0, "MS Sans Serif")
    $labelnext = GUICtrlCreateLabel("Next:", 32, 207, 53, 28)
    GUICtrlSetFont(-1, 15, 400, 0, "MS Sans Serif")
    $labelvolume = GUICtrlCreateLabel("Volume", 136, 16, 96, 36)
    GUICtrlSetFont(-1, 20, 400, 0, "MS Sans Serif")
    $last = GUICtrlCreateButton("Last", 320, 96, 41, 25, 0)
    $next = GUICtrlCreateButton("Next", 320, 127, 41, 25, 0)
    GUISetState(@SW_SHOW)

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

    ;GUICtrlSetOnEvent ( $play, "_play" )
    GUICtrlSetOnEvent ( $volume, "_volume" )
    GUICtrlSetOnEvent ( $fileadd, "_fileadd" )
    ;GUICtrlSetOnEvent ( $playlist, "_play" )
    ;GUICtrlSetOnEvent ( $pause, "_pause" )
    ;GUICtrlSetOnEvent ( $stop, "_stop" )
    GUICtrlSetOnEvent ( $save, "_save" )
    ;GUICtrlSetOnEvent ( $last, "_last" )
    ;GUICtrlSetOnEvent ( $next, "_next" )

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

    _load()

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

    While 1
    Sleep(100)
    WEnd

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

    Func _exit()
    Exit 0
    EndFunc

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

    Func _save()
    $liste = GUICtrlRead($playlist)
    IniWrite(@ScriptDir & "\playlist.ini", "MP3", "", $liste)
    EndFunc

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

    Func _fileadd()
    $open = FileOpenDialog("Add a new file", @ScriptDir, "Music files (*.mp3)",1)
    GUICtrlSetData($playlist, $open & ".mp3")
    EndFunc

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

    Func _load()
    Local $numbers2 = IniReadSection("playlist.ini", "MP3"), $string = ""
    If @error Then Return
    Global $numbers[Ubound($numbers2, 1)]

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

    For $i = 0 To Ubound($numbers2, 1) - 1
    $string &= $numbers2[$i][1] & "|"
    $numbers[$i] = $numbers2[$i][1]
    Next

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

    GUICtrlSetData($playlist, $string )
    EndFunc

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

    Func _volume()
    $slider1 = GUICtrlRead($volume)
    SoundSetWaveVolume($slider1)
    EndFunc

    [/autoit]

    Hat irgendeiner ne Idee?
    Danke im voraus.

    EDIT: Ich hab (@ScriptDir & "\playlist.ini",... geschrieben, und es geht Oo
    Aber ich kann nur das abspeichern, was selektiert wurde. Kann man nicht alle Werte auf einmal auslesen?

    4 Mal editiert, zuletzt von mipez (23. April 2010 um 21:28)

  • Hallo mipez,

    füge einmal ConsoleWrite in deine Func ein, dann erkennst du das es nicht an IWrite liegt

    Spoiler anzeigen

    Func _save()
    $liste = GUICtrlRead($playlist)
    ConsoleWrite($playlist & @crlf)
    IniWrite(@ScriptDir & "\playlist.ini", "MP3", "", $liste)
    EndFunc ;=

    [autoit][/autoit]

    hier ein Beispiel zum Einsatz von INI's mit Listbox:

    Spoiler anzeigen
    [autoit]

    #include <GUIConstants.au3>
    #Include <GuiListBox.au3>
    #include <ListboxConstants.au3>
    #include <File.au3>

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

    Global $szDrive,$szDir,$szFName,$szExt, $Ini = @ScriptDir & "\Flaggen.ini"

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

    $hGUI = GUICreate("Flaggen", 300, 130)
    $hListe = GUICtrlCreateList("", 10, 10, 180, 80,$LBS_NOTIFY)
    $hNeu = GUICtrlCreateButton("...",200,10,30,25)
    $hVorschau = GUICtrlCreatePic(@ScriptDir & "\Flaggen\NA.jpg", 210, 40, 36, 24)
    $hIniSave = GUICtrlCreateButton("&Speichern",10,100,80)
    $hIniLoad = GUICtrlCreateButton("&Laden",210,100,80)
    GUISetState()

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    case $hIniLoad
    $aListe = IniReadSection($Ini,"Flaggen")
    for $i = 0 to UBound($aListe) -1
    if StringStripCR($aListe[$i][1]) <> "" Then _GUICtrlListBox_InsertString($hListe,$aListe[$i][1])
    Next
    case $hIniSave
    for $i = 0 to _GUICtrlListBox_GetCount($hListe) -1
    IniWrite($Ini,"Flaggen","Land"&$i,_GUICtrlListBox_GetText($hListe,$i))
    Next
    case $hNeu
    $sAlt = GUICtrlRead($hListe)
    $sPlus = FileOpenDialog("Land auswählen:",@ScriptDir & "\Flaggen","Bilder (*.jpg)",3,"",$hGUI)
    _PathSplit($sPlus,$szDrive,$szDir,$szFName,$szExt)
    ConsoleWrite($szFName & @CRLF)
    _GUICtrlListBox_InsertString($hListe,$szFName,0)
    Case $hListe
    GUICtrlSetImage($hVorschau, @ScriptDir & "\Flaggen\" & GUICtrlRead($hListe) & ".jpg")
    EndSwitch
    WEnd

    [/autoit]

    mfg (Auto)Bert

  • Ich habs selbst hinbekommen.
    Trotzdem vielen Dank^^

    Für alle dies genau wissen wollen:

    [autoit]

    Func _save()
    For $i = 0 To _GUICtrlListBox_GetCount($playlist) -1 ;Liest die Anzahl der ListBox Einträge
    $liste = _GUICtrlListBox_GetText($playlist,$i) ;Liest den Text aller Einträge
    IniWrite(@ScriptDir & "\playlist.ini", "MP3", $i, $liste) ;Schreibt z.B. von 0 - 9 Einträge in die .ini
    Next
    EndFunc

    [/autoit]