Witam,
mam problem ze stworzeniem rankingu w grze "Układanka z jednym pustym miejscem". Gdy kafelki obrazu ułożone są w dobrej kolejności zapisywane są do pliku tekstowego imię nazwisko czas itp. Ranking miałby się właśnie z tego składać. Do wyświetlenia rankingu służy przycisk "Ranking", po którego kliknięciu pobierane są do tablicy rekordów dane. Łącze minuty i sekundy tak aby były w zmiennej sekundy w sensie np. a[i]:=ranking[i].sekundy+ranking[i].minuty*60. Sortuje te dane ale przy wyświetlaniu coś jest nie tak i nie mogę dojść co;/.
Proszę o pomoc.
Wczytywanie do pliku wartości po sprawdzeniu czy gracz ułożył prawidłowo kafelki:
begin
l := false;
kk.minuty:=StrToInt(m);
kk.sekundy:=StrToInt(s);
AssignFile(plik,'c:\ukladanka\bmp\rekordy.txt');
append(plik);
writeln(plik, kk.Imie);
writeln(plik, kk.Nazwisko);
writeln(plik, kk.minuty);
writeln(plik, kk.sekundy);
CloseFile(plik);
Showmessage
('GRATULACJE!! UDAŁO CI SIĘ!!:)' + #13 +
' Twój wynik to: ' + m + ':' + s);
end;
Przycisk "Ranking":
procedure TForm1.Button3Click(Sender: TObject);
var
d:string;
s: Integer;
j: Integer;
begin
s:=0;
ListBox1.Items.Clear;
AssignFile(plik, 'c:\ukladanka\bmp\rekordy.txt');
reset(plik);
while not eof(plik) do
begin
inc(s);
Readln(plik, ranking[s].Imie);
Readln(plik, ranking[s].Nazwisko);
Readln(plik, ranking[s].minuty);
Readln(plik, ranking[s].sekundy);
End;
CloseFile(plik);
for i := 1 to s do
begin
ranking[i].sekundy:=(ranking[i].sekundy+(ranking[i].minuty*60));
end;
for i := 1 to 9 do
for j := 1 to 9 do
if ranking[i].sekundy>ranking[i+1].sekundy then
begin
a:=ranking[i];
ranking[i+1]:= ranking[i];
ranking[i+1]:=a;
end;
for i := 1 to s do
begin
d:=ranking[i].Imie+' '+ ranking[i].Nazwisko+' '+IntToStr(ranking[i].sekundy);
Listbox1.Items.Add(d);
end;
end;