Ini Neu Numerieren

  • Hallo,

    ich habe folgendes Problem.
    Ich muß meine INI per Code neu durchnumerieren.

    Meine INI sieht am ANFANG so aus:

    Spoiler anzeigen


    [Namen]
    1=Peter
    2=Hans
    3=Erika
    4=Paul
    5=Ida
    [Link]
    1=exe\1.au3
    2=exe\2.au3
    3=exe\3.au3
    4=exe\4.au3
    5=exe\5.au3

    Dann werden aber z.B. Einträge gelöscht oder neu hinzugefügt.
    Danach sieht meine INI so aus.
    Z.B, Key 1 und 4 werden gelöscht!

    Spoiler anzeigen


    [Namen]
    2=Hans
    3=Erika
    5=Ida
    [Link]
    2=exe\2.au3
    3=exe\3.au3
    5=exe\5.au3

    Nun hätte ich gerne, dass die Nummern nochmal stimmen.
    Es soll neu nummeriert werden: So sollte es aussehen

    Spoiler anzeigen


    [Namen]
    1=Hans
    2=Erika
    3=Ida
    [Link]
    1=exe\2.au3
    2=exe\3.au3
    3=exe\5.au3

    So hier mal mein Code:

    Spoiler anzeigen
    [autoit]


    $AIni = $sDataDir & "" & GUICtrlRead($idcbo) & ".ini" ; der kpl Pfad zur INI also c:\.......Programm.ini = OK!
    ;Msgbox(4096,"",$Aini)

    Local $var = IniReadSection($AIni, "Namen"); alle Einträge der Sektion lesen!
    If @error Then
    MsgBox(4096, "", "Es ist ein Fehler aufgetreten. Warscheinlich keine INI Datei vorhanden.")
    Else
    For $i = 1 To $var[0][0]
    MsgBox(4096, "", "Nr: " & $var[$i][0] & @CRLF & "Name: " & $var[$i][1]); Die jeweilige Zahl+Eintrag wird angezeigt=OK!
    ;also

    ;~ 2=Hans
    ;~ 3=Erika
    ;~ 5=Ida

    ;Die Zähler sollten nun neu geschrieben werden: 1,2,3...

    ;ab hier komme ich nicht mehr weiter!

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



    ;IniWrite($AIni, "Namen", $var[$i][$i], $var[$i][1])

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

    ;IniDelete($AIni, "Namen", $var[$i][0])
    ;IniWrite($AIni, "Namen", $var[$i][$i], "")
    ;$Zahl = $var[$i][0]+1
    Next
    ;MsgBox(4096, "",$Zahl )
    EndIf

    [/autoit]


    Liebe Grüße
    Ilse ;)

    Einmal editiert, zuletzt von Ilse (11. März 2014 um 19:37)

  • mit IniReadSection die Sektion einlesen
    mit IniDelete die komplette Sektion löschen
    in einer Schleife mit IniWrite die einzelnen Einträge schreiben, wobei der Schlüssel dem Zähler (1, 2, 3, ...) in der Schleife entspricht.

    Das solltest du hinbekommen ;)