Witam, mam problem, a nie znalazlem odpowiedzi...

Robie baze danych w Pascalu na zaliczenie. Są to trzy listy: lista klientow, lista kaset w wypozyczalni, oraz trzecia lista, ktora podczepiana jest do listy klientow i zawiera dane o wypozyczeniu oraz ewentualny wskaznik na kolejny element tej listy. Deklaracja wyglada tak:

type
  wskaznik_klienta=^klient;
  wskaznik_filmu=^film;
  wskaznik_listy=^lista;
  klient=record
              ID:integer;
              Nazwisko:string [50];
              Imie:string [30];
              Pesel:string [20];
              Ulica:string [50];
              NrDomu:string [10];
              NrMieszkania:string [10];
              KodPocztowy:string [6];
              Miasto:string [50];
              next:wskaznik_klienta;
              prev:wskaznik_klienta;
              wypozyczono:wskaznik_listy;
             end;
  lista=record
              klient:wskaznik_klienta;
              ID_klienta:integer;
              wypozyczyl:wskaznik_filmu;
              ID_filmu:integer;
              data_wyp:array [1..3] of Word; {rotmat dd-mm-rrrr}
              next:wskaznik_listy;
              prev:wskaznik_listy;
           end;
  film=record
              ID:integer;
              Tytul:string [50];
              Rezyser:string [80];
              Aktor1:string [80];
              Aktor2:string [80];
              Wytwornia:string [50];
              RokProdukcji:string [10];
              Ilosc_Egz:byte;
              next:wskaznik_filmu;
              prev:wskaznik_filmu;
          end;

Dane na temat wypozyczen przechowywane sa w pliku textowym w postaci
ID_klienta;ID_Filmu;dzien;mies;rok
i teraz mam problem. Jak wczytuje wypozyczenia, wskaznik na podliste z wypozyczeniem podpinam do klient^.wypozyczono i ustawiam wartosc next na nil`a. Ale w momencie wczytywania ten nil sie traci i program sie zapęla... Ciagle jako next wskazuje na siebie :/ i kurde nie widze gdzie jest tutaj blad... Procedura wyglada tak:

Procedure Wczytaj_wyp (glowa_klienta:wskaznik_klienta; glowa_filmu:wskaznik_filmu);

 var
   tymczas: array [1..5] of string;
   wiersz: string;
   KlientID: integer;
   FilmID: integer;
   dzien,miesiac,rok:integer;
   dlugosc_wiersza:byte;
   wyraz,i:byte;
   blad:integer;
   przech_kl,pomK: wskaznik_klienta;
   przech_fi,pomF: wskaznik_filmu;
   przech_li,pomL: wskaznik_listy;
   rezultat:boolean;
   znak:char;

 Begin
   assign (wypozyczenia, 'wypozycz.txt');
   reset (wypozyczenia);
   przech_fi:=nil;
   przech_kl:=nil;
   wyraz:=1;
   while (not eof (wypozyczenia)) do
     begin
       readln (wypozyczenia, wiersz);
       dlugosc_wiersza:=length(wiersz);
       for i:=1 to 5 do tymczas[i]:=''; {zeruje tablice}
       for i:=1 to dlugosc_wiersza do
         begin
           znak:=wiersz[i];
           if znak<>';' then
             tymczas[wyraz]:=tymczas[wyraz]+znak
           else                                      {uzupelnia tablice kolejnymi danymi klientow}
             inc(wyraz,1);
         end;
       for i:=length(tymczas[1]) downto 1 do val(tymczas[1],KlientID,blad);
       for i:=length(tymczas[2]) downto 1 do val(tymczas[2],filmID,blad);
       for i:=length(tymczas[3]) downto 1 do val(tymczas[3],dzien,blad);
       for i:=length(tymczas[4]) downto 1 do val(tymczas[4],miesiac,blad);
       for i:=length(tymczas[5]) downto 1 do val(tymczas[5],rok,blad);
       {wyszukiwanie filmu}
       if glowa_filmu=nil then
         begin
           write ('brak bazy filmow, program nie moze wczytac danych.'); delay (1000);
           exit;
         end
       else
         begin
           pomF:=glowa_filmu;
           for j:=1 to (licznik_filmow-1) do
             begin
               rezultat:=false;
               if pomF^.ID=FilmID then
                 begin
                   rezultat:=true;
                   przech_fi:=pomF;
                   pomF:=pomF^.next;
                 end
               else
                 pomF:=pomF^.next;
             end;
           if przech_fi=nil then
             begin
               write ('BLAD! Nie zgadzaja sie dane w bazie filmow!'); delay (1000);
               exit;
             end;
         end;
       {wyszukiwanie klienta}
       if glowa_klienta=nil then
         begin
           write ('brak bazy filmow, program nie moze wczytac danych.'); delay (1000);
           exit;
         end
       else
         begin
           pomK:=glowa_klienta;
           for j:=1 to (licznik_klientow-1) do
             begin
               rezultat:=false;
               if pomK^.ID=klientID then
                 begin
                   rezultat:=true;
                   przech_kl:=pomK;
                   pomK:=pomK^.next;
                   if przech_kl^.wypozyczono=nil then
                     begin
                       new (przech_li);
                       przech_li^.klient:=przech_kl;
                       przech_li^.ID_klienta:=przech_kl^.ID;
                       przech_li^.wypozyczyl:=przech_fi;
                       przech_li^.ID_filmu:=przech_fi^.ID;
                       przech_li^.Data_wyp[1]:=dzien;
                       przech_li^.Data_wyp[2]:=miesiac;
                       przech_li^.Data_wyp[3]:=rok;
                       przech_li^.prev:=nil;
                       przech_li^.next:=nil;
                       przech_kl^.wypozyczono:=przech_li;
                     end
                   else
                     begin
                       pomL:=przech_kl^.wypozyczono;
                       repeat
                         begin
                           pomL:=pomL^.next;
                         end;                                  {TU SIE ZAPĘTLA!!!!}
                       until pomL^.next=nil;
                       new (przech_li);
                       przech_li^.klient:=przech_kl;
                       przech_li^.ID_klienta:=przech_kl^.ID;
                       przech_li^.wypozyczyl:=przech_fi;
                       przech_li^.ID_filmu:=przech_fi^.ID;
                       przech_li^.Data_wyp[1]:=dzien;
                       przech_li^.Data_wyp[2]:=miesiac;
                       przech_li^.Data_wyp[3]:=rok;
                       przech_li^.prev:=pomL;
                       przech_li^.next:=nil;
                       pomL^.next:=przech_li;
                    end;
                 end
               else
                 pomK:=pomK^.next;
             end;
           if przech_kl=nil then
             begin
               write ('Blad odczytu danych, wczytywanie przerwano.'); delay (1000);
               exit;
             end;
         end;
     end;
 End;

Bede wdzieczny za kazda pomoc...