Hi Leute,
ich habe eine große *.ini Datei, in der viele Ergebnisse (nur Zahlen) stehen. Gibt es nun einen Befehl die alle nach Größe zu sortieren und in eine *.txt Datei zu schreiben? Sozusagen wie eine Highscore.
Oder komm ich da ums rumprogrammieren mit For/while-Schleifen nicht drum herum?
mfg Aquaplant
Ini Datei Ergebnisse sortieren --- Befehl vorhanden?
-
- [ offen ]
-
Aquaplant -
28. Oktober 2009 um 21:18 -
Geschlossen -
Erledigt
-
-
- Offizieller Beitrag
Sozusagen wie eine Highscore.
Ja was denn nun? Sozusagen ein Highscore oder tatsächlich?
[score]
peter=12500
anna=7050Oder wie?
-
- Offizieller Beitrag
Poste mal deine INI Datei.
-
versuch das mal mit IniReadSection & _ArraySort
-
Zitat
[Readme.txt - Editor]
Readme.txt - Editor=101
[Lokaler Datenträger (D:)]
Lokaler Datenträger (D:)=5
[Programme]
Programme=19
[Neuer Ordner]
Neuer Ordner=16
[Statistic.ini - Editor]
Statistic.ini - Editor=26
[Scripten]
Scripten=6
[YouTube - Highland Cathedral - Opera]
YouTube - Highland Cathedral - Opera=2
Das mal als Ausschnitt/Beispiel. Er soll sie jetzt nach der Zeit (in Sekunden (Value)) sortieren und zwar so, dass in einer *.txt Datei oben z.B. Readme = 101 und ganz unten der kleinste Wert Youtube = 2 steht. Aber immer wieder einen Absatz einfügt. -
Wesentlich einfacher (und übersichtlicher) wäre es, wenn du alles in eine Section (zb. "Zeit") packst, anstatt ganz viele sections zu machen.
Dann kannst du ganz einfach mit _IniReadSection() und _arraysort() arbeiten. -
Das geht leider nicht. Manchmal ist bei dem Programm noch ein Fehler, dann benutze ich
[autoit]For $i = 1 To $e[0]
[/autoit]
$c = IniRead(@ScriptDir & "\Statistic.ini", $e[$i], $e[$i], "0")
If $c = 1 Or $c = 0 Then
IniDelete(@ScriptDir & "\Statistic.ini", $e[$i])
EndIf
Next
Kann ich nicht jede Section in ein Array speichern und dann _arraysort benutzen?
Geht das, wenn ich n 2-dimensionale Arrays erstelle, bei dem $array[x][y] n= Anzahl der sections, x=Name der section und y=die Zeit ist? -
Hilfe Datei -.-"
Oder soll wir die Funktionen der Befehle noch vor diktieren? -.- -
Sry, hier ist noch einmal das gesamte Script, das den Fehler behebt:
[autoit]Global $i, $c, $e, $t=10
[/autoit][autoit][/autoit][autoit]$i = MsgBox(4, "Debug?", "Do you really want to Debug?")
[/autoit]
If $i = 6 Then
FileDelete(@ScriptDir & "\Statistic.ini.backup")
FileCopy(@ScriptDir & "\Statistic.ini", @ScriptDir & "\Statistic.ini.backup")
$e = IniReadSectionNames(@ScriptDir & "\Statistic.ini")
If @error Then
MsgBox(16, "Error #7893", "Unable to finish reading! Make sure that file 'Statistic.ini' exists!")
EndIf
While Not $t = 0
$t = $t - 1
For $i = 1 To $e[0]
$c = IniRead(@ScriptDir & "\Statistic.ini", $e[$i], $e[$i], "0")
;MsgBox(1, "Section Name", $c & "|" & $e[$i])
If $c = 1 Or $c = 0 Then
IniDelete(@ScriptDir & "\Statistic.ini", $e[$i])
EndIf
Next
WEnd
EndIf -
- Offizieller Beitrag
Das geht leider nicht. Manchmal ist bei dem Programm noch ein Fehler, dann benutze ich
Da baust du dir selbst einen Stolperstein ein. Was veranlasst dich, bei einem Fehler die gesamte Sektion zu löschen? Es reicht doch völlig den betreffenden Key zu kicken, bzw. noch besser: erst in die INI zu schreiben, wenn KEIN Fehler vorliegt. Du solltest also dein Konzept umstellen. Das ist besser als einer unklaren Voraussetzung das Programm anpassen zu wollen.