Ich weiß nicht ob das nicht übertrieben wäre, aber du könntest THighscores auch zur Klasse machen
Delphi-Quellcode:
type
THighscores = class(TObject)
public
Items: array [1..10] of THighscorePlatz
procedure LoadFromFile(FileName: string);
procedure SaveToFile(FileName: string);
function HighscorePlatzErreicht(Name: string; Punkte: Integer): Integer;
end;
Save und Load musst du dann beim Starten des Programms bzw. beim Beenden ausführen.
In der Funktion HighscorePlatzErreicht könntest du prüfen ob und an welchen Platz ein neuer Spielstand in die Highscore gehört. Wenn er reinkommt verschiebst du die Einträge im Array um einen Platz nach hinten und schreibst den übergebenen Record an die entsprechende Stelle.
Delphi-Quellcode:
function THighscores.HighscorePlatzErreicht(
Name:
string; Punkte: Integer): Integer;
var
i, j: Integer;
fertig: Boolean;
begin
fertig := false;
i := High(Items);
while i >= Low(Items)
and not fertig
do
begin
if Items[i].Punkte > Punkte
then
begin
for j := i+1
to Low(Items) -1
do
Items[j+1] := Items[j];
Items[i+1].Punkte := Punkte;
Items[i+1].
Name :=
Name;
fertig := true;
end;
Dec(i);
end;
end;
So oder so ähnlich.
Mein Vater hat grad den Fernseher angemacht und ich kann nicht dafür garantieren dass sich nicht doch noch ein Logikfehler eingeschlichen hat...