Mam problem z tym, że jak próbuję odczytać wartości z wcześniej zapisanego pliku typowanego, to wyskakują wartości, które nie powinny się tam znajdować. Nie wiem co w tym kodzie może być nie tak? Proszę o pomoc.
HistoriaTablica = array[1..DLUGOSC_HISTORII] of integer;
TZapisRozgrywki = Packed Record
wierszSkad : HistoriaTablica;
kolumnaSkad : HistoriaTablica;
wierszDokad : HistoriaTablica;
kolumnaDokad : HistoriaTablica;
tura : Kolor;
tryb : TrybRozgrywki;
dlugoscHistorii : integer;
numerWskaznikaPoHistorii : integer;
end;
TPlikRozgrywki = File Of TZapisRozgrywki;
function przetworzRozgrywkeDoZapisu(const r : TRozgrywka) : TZapisRozgrywki;
var zapis : TZapisRozgrywki; pom : Lista; liczbaPosuniec : integer;
begin
zapis.tura := r.tura.kolor;
zapis.tryb := r.tryb;
pom := r.historia;
liczbaPosuniec := 0;
if (pom <> nil) then
while (pom^.poprz <> nil) do
begin
inc(liczbaPosuniec);
if (pom = r.wskaznikPoHistorii) then
zapis.numerWskaznikaPoHistorii := liczbaPosuniec;
zapis.wierszSkad[liczbaPosuniec] := pom.skad.wiersz;
zapis.kolumnaSkad[liczbaPosuniec] := pom.skad.kolumna;
zapis.wierszDokad[liczbaPosuniec] := pom.dokad.wiersz;
zapis.kolumnaDokad[liczbaPosuniec] := pom.dokad.kolumna;
pom := pom^.poprz;
end;
zapis.dlugoscHistorii := liczbaPosuniec;
end;
procedure zapisGry(nazwa : String; const r : TRozgrywka);
var plik : TPlikRozgrywki; zapis : TZapisRozgrywki;
begin
AssignFile(plik, nazwa);
if (not FileExists(nazwa)) then Rewrite(plik)
else Reset(plik);
zapis := przetworzRozgrywkeDoZapisu(r);
Write(plik, zapis);
CloseFile(plik);
end;
function wczytanieGry(nazwa : String) : TRozgrywka;
var plik : TPlikRozgrywki; zapis : TZapisRozgrywki; i : integer;
begin
AssignFile(plik, SCIEZKA + nazwa);
Reset(plik);
Read(plik, zapis);
i := zapis.dlugoscHistorii;
ShowMessage(IntToStr(i)); //w tym miejscu sprawdzam wartość i jest ona niepoprawna,
CloseFile(plik); // bo wartości obiektów, z których było
end; //to spisywane były z zakresu 1..7, a ta jest dużo dużo większa