Zapis i odczyt z pliku listy podwieszanej

0

Witam, mam następujące typy:

	
type
	    pPrzedmiot=^Przedmiot;
	    Przedmiot=record
	              nazwa: string;
	              ocena: array[0..19] of string;
	              next: pPrzedmiot;
	              end;
	 
	    pOsoba=^Osoba;                  
	    Osoba=record
	          imie: string;
	          nazwisko: string;
	          uwaga: array[0..19] of string;
	          nastepny: pOsoba;
	          nast: pPrzedmiot;
	          end;
	 
	Osoba_plik = file of Osoba;

Potrzebuję listę podwieszaną stworzoną z tych rekordów (do każdej osoby "doczepiam" listę z przedmiotami i ocenami) wczytać z pliku, i do niego zapisać. W google nie znalazłam niczego, co rozwiązałoby mój problem. Może ktoś z Was znajdzie błąd
Zapis i odczyt pliku:

procedure Zapisz(Head : pOsoba);
var
plik: Osoba_plik;

begin
     assign(plik, 'wynik.bin');
     rewrite(plik);
     while Head<>nil do
     begin
          write(plik,Head^);
          Head:=Head^.nastepny;
     end;
     close(plik);
end;

procedure Wczytaj(var Head:pOsoba);
var
plik: Osoba_plik;
tmp:pOsoba;
begin
     Head:=nil;
     assign(plik, 'wynik.bin');
     reset(plik);
     while not (eof) do
     begin
          if (Head = nil) then
          begin
               read(plik,Head^);
               Head^.nastepny:=nil;
          end
          else
          begin
               new(tmp);
               read(plik,tmp^);
               tmp^.nastepny:=nil;
               Head^.nastepny:=tmp;
               Head:=Head^.nastepny;
          end;


     end;
     close(plik);
end;
0

tak nie możesz zapisać string'a - zapewne zapisujesz tylko Pointer na danego stringa w pamięci, który po odczytaniu i tak nie istnieje pod tym adresem. Rozwiązanie to albo zapisywać składowe rekordu osobno, albo ograniczyć napis używając typu ShortString tu masz wyjaśnienie String

1 użytkowników online, w tym zalogowanych: 0, gości: 1