Also ich würde wenn es nur um zentrale Highscores geht die Sache mit einer exklusiv gelockten Datei erledigen.
Hier mal Stichpunktartig der Ablauf:
Eingabeparameter:
* Dateiname
* Highscorename
* scorewert (-1 bedeutet: Highscore nicht schreiben)
Ausgabe
* Stringliste mit Highscores
Ablauf
1.) Datei exklusiv öffnen
dabei hilft dieser Code
http://www.delphipraxis.net/52135-ex...f-dateien.html
2.) Inhalt aus dem Stream in die Stringliste einlesen
Liste.ReadFromStream(stream);
3.) Wenn scorewert = -1 dann gehts weiter mit Punkt 8
4.) Zeile mit dem Highscorename suchen und aktualisieren
der Inhalt der Datei könnte z.B. so aussehen
Code:
Gametester|200000
Predator|80500
Fredl|60000
Beginner|5500
Also immer Name|score in einer Zeile
5.) Falls der eigene Name nicht in der Liste enthalten dann neuen Eintrag einfügen
6.) Liste ggf. sortieren
7.) Stream Position auf Anfang setzen und aktualisiert Liste schreiben
8.) Streamobjekt freigeben
Man kann den beschriebenen Auflauf in einer Procedure unterbringen oder (besser) man schreibt eine Klasse dafür.
Nachtrag: man kann die Stringliste auch in ein
TMemIniFile
kopieren (Methoden
SetStrings
,
GetStrings
) und so den Datenzugriff vereinfachen