Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Inis: Letzten Eintrag löschen und den Rest um eins aufrücken (https://www.delphipraxis.net/41206-inis-letzten-eintrag-loeschen-und-den-rest-um-eins-aufruecken.html)

malo 27. Feb 2005 18:35


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:
[Platz 1]
Name=irgendwas
Zeit=10000

[Platz 2]
Name=irgendwasanderes
Zeit=10001

...

[Platz 10]
Name=bla
Zeit=10009
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:

Khabarakh 27. Feb 2005 19:29

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.

sECuRE 27. Feb 2005 19:44

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

malo 27. Feb 2005 20:07

Re: Inis: Letzten Eintrag löschen und den Rest um eins aufrü
 
Zitat:

Zitat von Khabarakh
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.

Der Einwand ist völlig berechtigt und ich werd mir das auch nochmal durch den Kopf gehen lassen ;)

Zitat:

Zitat von sECuRE
Denkanstoss: Alles in eine Liste laden und erneut abspeichern.

Ja, aber wie erhöhe ich dann genau die Nummern der einzelnen Werte? Das bleibt immer noch offen (und ich will nicht unbedingt alles einzeln speichern...).

Zitat:

Zitat von sECuRE
Auf Wunsch poste ich auch ein Beispiel, hab sowas (ähnliches) schon mal gemacht.

Das wär echt super! :thumb:

sECuRE 27. Feb 2005 20:09

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

malo 27. Feb 2005 20:13

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... ;)

sECuRE 27. Feb 2005 20:17

Re: Inis: Letzten Eintrag löschen und den Rest um eins aufrü
 
Hi,

achso... Gut, dann schau mal hier:
Delphi-Quellcode:
// 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;
Das funktioniert allerdings nur, wenn die ini in folgendem Format abgespeichert ist:
Code:
[section]
ins=1
0=blah
Vielleicht kannst du es ja "portieren".

cu

malo 27. Feb 2005 20:27

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... :?

Binärbaum 27. Feb 2005 23:00

Re: Inis: Letzten Eintrag löschen und den Rest um eins aufrü
 
Zitat:

Zitat von malo
Erstmal danke :thumb:


Nur jetzt mal eine Frage dazu: Was sortiert dieser Code wie genau? Das kann ich so nicht unbedingt überblicken... :?

So wie ich das sehe, wird dabei überhaupt nichts sortiert. Oder täusche ich mich da etwa? :gruebel:

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