Das wird bei start ausgeführt! wenn die datei existiert dann wird aus der gelesen wenn nicht wird c: genommen und wenn die nicht existiert wird sie erstellt (beim eintragen);
Delphi-Quellcode:
procedure TForm1.FormCreate(Sender: TObject);
//.....
HighScore := TStringList.Create;
if FileExists('T:\snake\highscore.dat')
then
begin
HighScorePfad := ('T:\snake\highscore.dat');
HighScore.LoadFromFile(HighScorePfad);
csave:= false;
end
else
if FileExists('C:\Programme\Snake\Highscore4.dat')
then
begin
HighScorePfad := ('C:\Programme\Snake\Highscore4.dat');
HighScore.LoadFromFile(HighScorePfad);
csave:= true;
end
else
begin
HighScore.Add('005 Unknown');
HighScore.Add('010 Unknown');
HighScore.Add('015 Unknown');
Highscorepfad:=('C:\Programme\Snake\Highscore4.dat');
end;
//.....
das ist die procedure die beim einfürgen zur highscore aufgerufen wird!
Delphi-Quellcode:
procedure TForm1.FuegeZumHighScoreHinzu(Name : String; Score : Integer;
Trennzeichen : Char; Trennzeichenmenge : integer;
ScoreLength : integer);
var i : integer;
ATrennzeichen : String;
TempStrList : TStringList;
AScore : String;
begin
if HighScore.Count < 2 then Exit;
// Es müssen mindestens 2 Einträge in der HighScoreliste bereits stehen
if Trennzeichenmenge < 1 then Exit;
// Weniger als ein Trennzeichen oder gar negative Trennzeichen sind nicht möglich
for i := 1 to Trennzeichenmenge do
begin
ATrennzeichen := ATrennzeichen + Trennzeichen;
end;
// Unser Trenzeichenstring ist fertig
AScore := intToStr(Score);
while Length(AScore) <> ScoreLength do
begin
AScore := '0' + AScore;
end;
// Wir füllen die fehlenden Stellen im Score mit 0 auf. Damit alle Scorewerte in der Tabelle später
// gleich lang sind. So kommt das Programm beim Sortieren nicht durcheinander, und es sieht besser aus
TempStrList := TStringList.Create;
// Wir erstellen eine zweite temporäre Stringlist, in der wir dann sortieren
try
for i := 0 to HighScore.Count-1 do
begin
TempStrList.add(HighScore[i]);
end;
finally
try
TempStrList.add(AScore + ATrennzeichen + Name);
TempStrList.Sort;
//Sort ist eine sehr praktische Funktion der TStringList die wir benutzen
HighScore.clear;
finally
try
for i := (TempStrList.Count - 1) downto 0 do
begin
HighScore.add(TempStrList[i]);
end;
//hier fügen wir in umgekehrter Reihenfolgen die Werte aus der TempStringlist
//in unsere HighScore Liste
if csave=true then
ForceDirectories('C:\Programme\Snake\');
HighScore.SaveToFile(HighScorePfad); // Speichern nicht vergessen
finally
TempStrList.Free;
end;
end;
end;
end;
ich müsste also beim schreiben die datei nochmal einlesen! und wie schieße ich sie beim start wieder?
einfach T:\...\highscore.dat.close ??