Fortlaufende ini?

  • Hi,
    ich möchte mir(für mich selbst) eine Art Datenbank zu erstellen,und zwar soll das Programm
    nachdem ich gespielt habe,(Ich Tippe das alles manuell ein)
    eine ini anlegt wo die werte wie kills und tote drin stehen.
    Aller ding weiß ich gar nicht wie ich das so einstellen kann das der nach der ini 001 ne ini names 002 macht?
    Ich hab das jetz so geregelt:

    [autoit]

    Func eintragen()
    If FileExists("K.ini") Then
    Iniwrite("D.ini","Kills","Tötungen",GUICtrlRead($Input1))
    Iniwrite("D.ini","Tode","Tode",GUICtrlRead($Tote))
    Iniwrite("D.ini","Assits","Assits",GUICtrlRead($Assits))
    Iniwrite("D.ini","Ergebnis","Ergebnis",GUICtrlRead($Gewonnen))
    Iniwrite("D.ini","Champion","Champion",GUICtrlRead($Champions))
    Endif
    Iniwrite("K.ini","Kills","Tötungen",GUICtrlRead($Input1))
    Iniwrite("K.ini","Tode","Tode",GUICtrlRead($Tote))
    Iniwrite("K.ini","Assits","Assits",GUICtrlRead($Assits))
    Iniwrite("K.ini","Ergebnis","Ergebnis",GUICtrlRead($Gewonnen))
    Iniwrite("K.ini","Champion","Champion",GUICtrlRead($Champions))
    EndFunc

    [/autoit]

    Allerdigs habe ich echt keine Lust für die Zukünftige Dateien immer ein If anzulegen deswegen wollte ich eine fortlaufende Nummer machen
    Screenshot ist angehängt

  • Wie wäre es wenn du eine For-Schleife anlegst ungefähr so:

    Spoiler anzeigen
    [autoit]

    Func eintragen()
    Global $path
    $path = @ScriptDir &
    For $i = 1 to 10000

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

    Iniwrite($path & $i & ".ini","Kills","Tötungen","" & GUICtrlRead($Input1) & "")
    Iniwrite($path & $i & ".ini","Tode","Tode","" & GUICtrlRead($Tote) & "")
    Iniwrite($path & $i & ".ini","Assits","Assits","" & GUICtrlRead($Assits) & "")
    Iniwrite($path & $i & ".ini","Ergebnis","Ergebnis","" & GUICtrlRead($Gewonnen) & "")
    Iniwrite($path & $i & ".ini","Champion","Champion","" & GUICtrlRead($Champions) & "")
    Next
    EndFunc

    [/autoit]

    Einmal editiert, zuletzt von Robin98 (30. März 2013 um 16:26)

  • Und warum willst du quasi unendlich viele ini Dateien dafür anlegen? Ich würde mal vermuten, dass es eine einzige ini genauso tun würde, oder alternativ eine CSV Datei viel besser geeignet wäre. Im moment ist mir aber unklar was du nun eigentlich speichern möchtest. Wofür steht K und D in deinem Beispiel? Sollen das Spielernamen sein? Spielrunden/Level?

    Da du in deinem Beispiel jeweils nur einen Eintrag pro ini Sektion verwendest würde eine ini die so aufgebaut ist vielleicht mehr Sinn machen:


    Code
    [Level K]
    Tötungen=123
    Tode=3
    Assits=45
    Ergebnis=44
    Champion=44
    [Level D]
    Tötungen=454
    Tode=46
    ...
  • Ich hab es dir jetzt mal mit Sektionen umgeschrieben, jede Sektion ist ein LoL Spiel, in der Sektion Main ist die Anzahl der bereits gespielten Spiele drin und somit kann auch erfasst werden, wie die nächste Sektion heisst.

    Spoiler anzeigen
    [autoit]


    Func eintragen()
    $count = IniRead("lol.ini","main","count",0) + 1 ;Liest den vorherigen Count aus und addiert +1
    IniWrite("lol.ini",$count,"Kills",GUICtrlRead($Input1))
    Iniwrite("lol.ini",$count,"Deaths",GUICtrlRead($Tote))
    Iniwrite("lol.ini",$count,"Assists",GUICtrlRead($Assits))
    Iniwrite("lol.ini",$count,"Result",GUICtrlRead($Gewonnen))
    Iniwrite("lol.ini",$count,"Champion",GUICtrlRead($Champions))
    IniWrite("lol.ini","main","count",$count) ;Fügt den neuen Count ein(also der alte count +1)
    EndFunc

    [/autoit]


    Macht es doch nicht immer so kompliziert mit MySQL und CSV, mit einer ini geht es doch auch sehr gut.
    Mfg Fliwatt

  • Klar, aber MySQL lässt sich leichter verwalten.^^
    MySQL kann ich nicht, aber dafür SQLite (So halbwegs... Hust. Ist wohl eher Pseudocode. :D) . Und da wäre sowas möglich (Mal angenommen ChampID 1 => Ashe):

    SQL
    SELECT * FROM ´games´ WHERE ´ChampionID´ = 1, ´Win´ = true ORDER BY ´Kills´ ASC

    Wenn ich das nicht gerade verzapft habe, würde das alle gewonnen Spiele mit Ashe aufsteigend nach den Kills sortiert ausgeben.
    Das geht mit INIs nicht so einfach. :D

    lg

  • Macht es doch nicht immer so kompliziert mit MySQL und CSV, mit einer ini geht es doch auch sehr gut.

    Nun, dass eine SQL Datenbank in diesem Fall vermutlich übertrieben ist und vorallem einiges an Grundwissen zur SQL Syntax erfordert stimmt meiner Meinung nach. CSV Dateien sind hingegen je nach Datenstruktur wesentlich sinnvoller als ini Dateien, alleine schon deshalb weil Redundanz und somit Speicherplatz eingespart wird. Das kommt auch wieder der Geschwindigkeit zu gute. CSV Dateien kann man wunderbar in einem Rutsch in ein Array einlesen, was wiederum zahlreiche Festplattenzugriffe einspart. Sofern man den Umgang mit 2d Arrays und evtl anderen Array bezogenen Funktionen verstanden hat ist es auch nicht wirklich komplizierter als mit den ini Funktionen zu arbeiten.

    Anmerkung zu deinem Beispielscript:

    Es ist nicht notwendig die Anzahl der ini Sektionen in einer extra Sektion zu speichern. Stattdessen kann man auch IniReadSectionNames verwenden, welches in result[0] die Anzahl der gefundenen Sektionen zurückgibt.

  • ich danke euch für die vielen Antworten!
    Allerdings möchte ich euch sagen ich kenn mich mit Autoit nicht aus und kenne nur berenzte Befehele und weiss überhaupt was sie
    beudeuten und machen.Deshalb möchte ich es so unkomplizert und einfach halten wie nur möglich,
    Es sit mein erstes Tool und soll mir ne menge Spaß machen und mich beim Lernen begleiten,ich meine vor ne Woche konnte ich grad mal
    Msgboxen spamen und heute kann ich schon .ini Dateien selbst ständig schreiben :D,
    ich werd später mal alle Lösugen probieren und rausfinden was welches Ding macht und somit versuch ich zu Lernen.
    Danke für eure Hilfe ich werde die Präfix als gelöst umstellen,wenn ich noch fragen hab kann ich mich
    ja bei euch Melden!
    Danke :thumbup: