INI-Problem

  • Hey Leute
    ich kenn mich nicht wirklich mit INI-Dateien aus, aber ich habe gehört
    dass das sehr wichtig sein soll...
    Ich habe hier mal ein Programm geschrieben, das sachen in eine *.h33 Datei schreiben soll und dann in einer listview ausgeben soll...
    irgendwie habe ich da ein problem eingebaut aber ich glaube nicht dass das an dem ini zeug liegt
    wahrscheinlich irgendein blöder fehler-.-
    danke schonmal im vorraus;)

    Spoiler anzeigen
    [autoit]

    #include
    Local $nummer = 1, $readvar = 1

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

    GUICreate("MyFirstIniTry", 500, 50)
    $input = GUICtrlCreateInput("", 10, 10, 300, 30)
    $save = GUICtrlCreateButton("Speichern", 320, 10, 70, 30)
    $read = GUICtrlCreateButton("Gespeichertes", 400, 10, 90, 30)
    GUISetState()
    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    Case $save
    $read = GUICtrlRead($input)
    IniWrite("savefile.h33", "input", $nummer, $read)
    $nummer += 1
    Case $read
    GUICreate("Gespeichertes", 500, 500)
    $list = GUICtrlCreateListView("Gespeicherter Text:", 10, 10, 480, 480)
    GUISetState()
    Do
    $listitem = IniRead("savefile.h33", "input", $readvar, "LEER")
    GUICtrlCreateListViewItem($listitem, $list)
    Until $readvar = $nummer
    EndSwitch
    WEnd

    [/autoit]

    Edit bernd670 : Quellcode neu formatiert

  • hmm..

    [autoit]

    #include <GUIConstants.au3>

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

    Local $nummer=1,$readvar=1

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

    GUICreate("MyFirstIniTry",500,50)
    $input = GUICtrlCreateInput("",10,10,300,30)
    $save = GUICtrlCreateButton("Speichern",320,10,70,30)
    $read = GUICtrlCreateButton("Gespeichertes",400,10,90,30)
    GUISetState()

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    Case $save
    $read = GUICtrlRead($input)
    IniWrite("savefile.h33","input",$nummer,$read)
    $nummer += 1
    Case $read
    GUICreate("Gespeichertes",500,500)
    $list = GUICtrlCreateListView("Gespeicherter Text:",10,10,480,480)
    GUISetState()
    Do
    $listitem = IniRead("savefile.h33","input",$readvar,"LEER")
    GUICtrlCreateListViewItem($listitem,$list)
    Until $readvar = $nummer
    EndSwitch
    WEnd

    [/autoit]

    €also das ist deins oben <<

    • Offizieller Beitrag

    Nimm mal einen anderen Browser, das liegt bestimmt daran.

    Spoiler anzeigen
    [autoit]

    #include <GUIConstants.au3>

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

    Local $nummer=1,$readvar=1

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

    GUICreate("MyFirstIniTry",500,50)
    $hinput = GUICtrlCreateInput("",10,10,300,30)
    $hsave = GUICtrlCreateButton("Speichern",320,10,70,30)
    $hread = GUICtrlCreateButton("Gespeichertes",400,10,90,30)
    GUISetState()

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    Case $hsave
    $read = GUICtrlRead($hinput)
    IniWrite("savefile.h33","input",$nummer,$read)
    $nummer += 1
    Case $hread
    GUICreate("Gespeichertes",500,500)
    $list = GUICtrlCreateListView("Gespeicherter Text:",10,10,480,480)
    GUISetState()
    Do
    $listitem = IniRead("savefile.h33","input",$readvar,"LEER")
    GUICtrlCreateListViewItem($listitem,$list)
    $readvar +=1
    Until $readvar = $nummer
    EndSwitch
    WEnd

    [/autoit]

    Du hattest gleich mehrere Probleme. Die Variable $read benutz du doppelt und $readvar muß bei jedem Schleifendurchlauf auch erhöht werden.

  • Hallo DFPWare,

    mach es so:

    Spoiler anzeigen
    [autoit]

    #include <GUIConstants.au3>

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

    Local $nummer=1

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

    GUICreate("MyFirstIniTry",500,50)
    $input = GUICtrlCreateInput("",10,10,300,30)
    $btnSsave = GUICtrlCreateButton("Speichern",320,10,70,30)
    $btnRead = GUICtrlCreateButton("Gespeichertes",400,10,90,30)
    GUISetState()

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    Case $btnSsave
    $read = GUICtrlRead($input)
    IniWrite("savefile.h33","input",$nummer,$read)
    $nummer += 1
    Case $btnRead
    GUICreate("Gespeichertes",500,500)
    $list = GUICtrlCreateListView("Gespeicherter Text:",10,10,480,480)
    GUISetState()
    $aRead = IniReadSection("savefile.h33","input")
    if IsArray($aRead) Then
    for $i = 0 to UBound($aRead) -1
    if $aRead[$i][1] <> "" Then GUICtrlCreateListViewItem($aRead[$i][1],$list)
    Next
    EndIf
    EndSwitch
    WEnd

    [/autoit]

    dein Fehler war dass du die Variable $read doppelt belegt hattest 1 mal für die ControlID des Speicherbuttons, ein 2. Mal als Textvatiable. Da die Auswertung von $read dadurch 0 ergibt sobald gespeichert wird hat GuiGetMsg immer wieder den Case-Zweig $read ausgeführt. Das Einlesen der INI habe ich mit IniReadSection relisiert ist einfacher und etwas schneller,

    Frohes gutes neues Jahr autoBert

    • Offizieller Beitrag
    Spoiler anzeigen
    [autoit]

    #include <GUIConstants.au3>

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

    Local $nummer=1

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

    GUICreate("MyFirstIniTry",500,50)
    $input = GUICtrlCreateInput("",10,10,300,30)
    $btnSsave = GUICtrlCreateButton("Speichern",320,10,70,30)
    $btnRead = GUICtrlCreateButton("Gespeichertes",400,10,90,30)
    GUISetState()
    Local $aTmpRead = IniReadSection("savefile.h33","input")
    $nummer = $aTmpRead[0][0] +1
    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    Case $btnSsave
    $read = GUICtrlRead($input)
    IniWrite("savefile.h33","input",$nummer,$read)
    $nummer += 1
    Case $btnRead
    GUICreate("Gespeichertes",500,500)
    $list = GUICtrlCreateListView("Gespeicherter Text:",10,10,480,480)
    GUISetState()
    $aRead = IniReadSection("savefile.h33","input")
    if IsArray($aRead) Then
    for $i = 0 to UBound($aRead) -1
    if $aRead[$i][1] <> "" Then GUICtrlCreateListViewItem($aRead[$i][1],$list)
    Next
    EndIf
    EndSwitch
    WEnd

    [/autoit]

    Wenn du die alten Werte aus der Ini erhalten willst, mußt du die neuen auch anhängen.
    Also zuvol die Anzahl auslesen und $Nummer um 1 erhöhen, dann wird ein neuer Eintrag erstellt.

    Edit: Habe Autoberts Quellcode genommen, bei seinem ist es egal wieviele Einträge vorhanden sind und man muß sich um
    deren Anzahl nicht kümmern.