Ini-write überschreibt

  • argl!! ich glaub ich überseh hier irgendwas ganz simples..
    kann mir jemand die lösung sagen?
    ich will sone art minidatenbank machen und wenn ich die neuen werte in die ini reinschreibe, dann verschwinden die alten, obwohl sich die section immer ändert Oo --die keynamen bleiben alelrdings gleich, müsste aber eigentlich wurscht sein, d.h. ich denke ich hab wie o.g. irgendwas vermurxelt.

    Spoiler anzeigen
    [autoit]


    #include <Array.au3>
    #include <GUIConstants.au3>

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

    Dim $input[4200][10]

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

    $anzahl = IniRead('daten.ini','0','$anzahl','0')

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

    ;$input[$anzahl][1] = IniRead('daten.ini',$anzahl,'$name','')
    ;$input[$anzahl][2] = IniRead('daten.ini',$anzahl,'$hersteller','')
    ;$input[$anzahl][3] = IniRead('daten.ini',$anzahl,'$groesse','')
    ;$input[$anzahl][4] = IniRead('daten.ini',$anzahl,'$beschreibung','')
    ;$input[$anzahl][5] = IniRead('daten.ini',$anzahl,'$typ','')
    ;$input[$anzahl][6] = IniRead('daten.ini',$anzahl,'$auswahl','')
    Opt("GUICoordMode",2)
    GUICreate("Dateneingabe")
    GUICtrlCreateLabel('Eingabe der Daten:',10,10,100)
    GUICtrlCreateLabel('Name:',-1,0,200)
    $input[$anzahl][1] =GUICtrlCreateInput('',-1,0,200)
    GUICtrlCreateLabel('Hersteller:',-1,0,200)
    $input[$anzahl][2] =GUICtrlCreateInput('',-1,0,200)
    GUICtrlCreateLabel('Größe:',-1,0,200)
    $input[$anzahl][3] =GUICtrlCreateInput('',-1,0,200)
    GUICtrlCreateLabel('Beschreibung:',-1,0,200)
    $input[$anzahl][4] =GUICtrlCreateInput('',-1,0,200)
    GUICtrlCreateLabel('Typ:',-1,0,200)
    $input[$anzahl][5] =GUICtrlCreateInput('',-1,0,200)
    GUICtrlCreateLabel('Auswahl:',-1,0,200)
    $input[$anzahl][6] = GUICtrlCreateCombo ("item1",-1,0,200) ; create first item
    GUICtrlSetData(-1,"item2|item3","item3")
    $button = guictrlcreatebutton ("ok",-1,0,40,20)

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

    GUISetState()

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

    while 1
    $msg = guigetmsg()
    Select
    Case $msg = $GUI_EVENT_CLOSE
    Exit
    Case $msg = $button
    $name = GUICtrlRead($input[$anzahl][1])
    $hersteller = GUICtrlRead($input[$anzahl][2])
    $groesse = GUICtrlRead($input[$anzahl][3])
    $beschreibung = GUICtrlRead($input[$anzahl][4])
    $typ = GUICtrlRead($input[$anzahl][5])
    $auswahl = GUICtrlRead($input[$anzahl][6])
    $datum = @YEAR&'-'&@MON&'-'&@MDAY&', '&@HOUR&':'&@MIN&':'&@SEC
    FileOpen('daten.ini',2)
    sleep(100)
    IniWrite('daten.ini',$anzahl,'$datum',$datum)
    IniWrite('daten.ini',$anzahl,'$name',$name)
    IniWrite('daten.ini',$anzahl,'$hersteller',$hersteller)
    IniWrite('daten.ini',$anzahl,'$groesse',$groesse)
    IniWrite('daten.ini',$anzahl,'$beschreibung',$beschreibung)
    IniWrite('daten.ini',$anzahl,'$typ',$typ)
    IniWrite('daten.ini',$anzahl,'$auswahl',$auswahl)
    $anzahl = $anzahl +1
    IniWrite('daten.ini','0','$anzahl',$anzahl)
    exitloop
    endselect
    wend

    [/autoit]

    die ini sieht dann zB so aus:

    Code
    [1]
    $datum=2006-11-29, 17:13:04
    $name=blub
    $hersteller=blubmacher
    $groesse=ganzgroß
    $beschreibung=dergrößte
    $typ=vondemdaso
    $auswahl=item2
    [0]
    $anzahl=2
    • Offizieller Beitrag

    Willst du, dass zu den bestehenden Werten neue DAZUgeschrieben werden?
    Mit

    [autoit]

    IniWrite ( "filename", "section", "key", "value" )

    [/autoit]

    schreibst du in die gewählte Datei: "filename", in der Sektion: "section" für den Schlüssel: "key" den Wert: "value".
    Existiert bereits ein Wert, wird dieser überschrieben. Ich vermute, du wolltest ein Ergebnis etwa so:

    Code
    [section]
    schlüssel1=A,B,C
    schlüssel2=1,2,3
    ...


    Es ist fraglich, inwieweit es Sinn macht, eine INI-Datei zur Datenbank zu verbiegen. Aber es geht natürlich:

    [autoit]

    $name_alt = IniRead('daten.ini',$anzahl,'$name','') ; vorhandene(r) Wert(e)
    ;;
    ;;
    $name = GUICtrlRead($input[$anzahl][1])
    ;;
    ;;
    IniWrite('daten.ini',$anzahl,'$name',$name_alt & "," & $name)
    ;;

    [/autoit]
  • Du musst $anzahl erhöhen bevor du die neuen Werte überschreibst sonst nimmt er die höchste Section die du im moment da hast

  • Zudem löscht du mit FileOpen( "file", 2 ) auch alles was vorher drin stand ist also sinnlos ...