![]() |
Inis: Letzten Eintrag löschen und den Rest um eins aufrücken
Ich hab in einer ini Einträge gemacht, die etwa so aussehen:
Code:
Jetzt will ich den letzten Eintrag löschen und sonst an einer beliebigen Stelle alle Einträge "ein Feld aufrücken" lassen. Also alle Nummern hinter "Platz" sollen um 1 erhöht werden (ab einer bestimmten Nummer). Nur leider fehlt mir da grad mal ein kleiner Denkanstoß, wie ich das genau realisiere... :oops:
[Platz 1]
Name=irgendwas Zeit=10000 [Platz 2] Name=irgendwasanderes Zeit=10001 ... [Platz 10] Name=bla Zeit=10009 |
Re: Inis: Letzten Eintrag löschen und den Rest um eins aufrü
Ich weiß ja nicht, aber wäre da eine typisierte Datei nicht viel sinnvoller? Zumal, sofern es sich um einen Highscore handelt, typisierte Dateien nicht so leicht manipulieren lassen.
|
Re: Inis: Letzten Eintrag löschen und den Rest um eins aufrü
Hi,
Denkanstoss: Alles in eine Liste laden und erneut abspeichern. Auf Wunsch poste ich auch ein Beispiel, hab sowas (ähnliches) schon mal gemacht. cu |
Re: Inis: Letzten Eintrag löschen und den Rest um eins aufrü
Zitat:
Zitat:
Zitat:
|
Re: Inis: Letzten Eintrag löschen und den Rest um eins aufrü
Hi,
entscheid dich erstmal für einen der Threads beziehungsweise welche Methode du überhaupt nutzt, danach schauen wir uns das mit dem Beispiel (wenn überhaupt noch benötigt) noch mal genauer an... cu |
Re: Inis: Letzten Eintrag löschen und den Rest um eins aufrü
Also ich hab jetzt schon vor, das mit den inis fertig zu machen... wenn ich auf typirisierte Dateien umsteigen würde, müsste ich jetzt zu viel ändern... ;)
|
Re: Inis: Letzten Eintrag löschen und den Rest um eins aufrü
Hi,
achso... Gut, dann schau mal hier:
Delphi-Quellcode:
Das funktioniert allerdings nur, wenn die ini in folgendem Format abgespeichert ist:
// fn = filename
// s = section // n = name procedure ReArrangeIni(fn,s,n,ins:string); var ini:TIniFile; c:integer; t:string; nt:TStrings; begin ini:=TIniFile.Create(fn); try nt:=TStringList.Create; try for c:=0 to (ini.ReadInteger(s,ins,0)-1) do begin t:=ini.ReadString(s,n+IntToStr(c),''); if (length(t) > 0) then nt.Add(t); ini.DeleteKey(s,n+IntToStr(c)); end; for c:=0 to (nt.Count-1) do ini.WriteString(s,n+IntToStr(c),nt.Strings[c]); ini.WriteString(s,ins,IntToStr(nt.count)); finally nt.free; end; finally ini.free; end; end;
Code:
Vielleicht kannst du es ja "portieren".
[section]
ins=1 0=blah cu |
Re: Inis: Letzten Eintrag löschen und den Rest um eins aufrü
Erstmal danke :thumb:
Nur jetzt mal eine Frage dazu: Was sortiert dieser Code wie genau? Das kann ich so nicht unbedingt überblicken... :? |
Re: Inis: Letzten Eintrag löschen und den Rest um eins aufrü
Zitat:
MfG Binärbaum |
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:46 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz