Napoczątku wszystko było dobrze puźniej po przerobieniu jej na rekordy pojawił sie błąd logiczny po którym program sie zamyka(exitcode 201) całe wczytywanie ma 108 linijek wiec wrzuce tylko istotny kawałek
If filesize(dan)>=0 then
begin
d1:=0;
Repeat
seek(dan,d1);
read(dan,rec[d1]);
d1:=d1+1;
Until d1=filesize(dan);
Close(dan);
clrscr;
Write('Wczytywanie .');
Delay(150);
Write('.');
Clrscr;
write('WCZYTANO :)');
Delay(900);
end;
Błąd 201 oznacza przekroczenie zakresu tablicy więc być może zadeklarowałeś zbyt małą tablicę. Na początku zmienna dl ma wartość 0 a może tablica rec nie zaczyna się od indeksu 0 ale tej części kodu nie widzę więc ciężko coś więcej powiedzieć.
rec:array[1..1000] of osoba;
c,c2:char;
io:word;
d1:integer;
dan:file of osoba;
nzw,nazwa,onaz:string;
mz,mz1:char;
PROCEDURE wczytaj; {13}
Begin
textcolor(15);
mz:=' ';
Repeat
Repeat
clrscr;
WriteLN('1. Wczytaj z pliku ...');
WriteLn('2. Wczytaj ostatni zapis ');
Writeln('3. Wróć');
mz:=readkey;
Until (mz='1') or (mz<='3');
if mz='1' then
Begin
Repeat
Repeat
clrscr;
WriteLN('1. Wybierz z listy ...');
WriteLn('2. Wprowadz nazwe ... ');
Writeln('3. Wróć');
mz1:=readkey;
Until (mz1='1') or (mz1<='3');
if mz1='2' then
begin
repeat
Writeln('Podaj nazwe pliku do wczytania');
ReadLn(nzw);
nazwa:=nzw+'.dan';
If Istnieje(nazwa)=FALSE Then Writeln('Taki plik nie istnieje sprobuj jeszcze raz');
If Istnieje(nazwa)=TRUE then
begin
onaz:=nazwa;
writeln('Nazwa pliku to ', nazwa);
end;
until Istnieje(nazwa)=TRUE;
delay(550);
end;
if mz1='1' then
begin
Writeln('Lista plików bazy znajdujących się w folderze z programem');
listaplik;
Writeln('Wybierz wpisując numer pliku i naciskając enter');
Repeat
write('Nr : ') ;
read(ktwp);
if (ktwp>nrp) or (ktwp<1) then writeln('Niema takiego pliku');
until (ktwp<=nrp) and (ktwp>=1) ;
nazwa:=nazwapl[ktwp];
mz1:='3';
end;
until mz1='3';
end;
if mz='2' then
begin
if onaz=' ' then
begin
WriteLN('Nic ostatnio nie wczytywałes');
delay(1000);
clrscr;
Repeat
Writeln('Podaj nazwe pliku do wczytania');
ReadLn(nzw);
nazwa:=nzw+'.dan';
If Istnieje(nazwa)=FALSE Then Writeln('Taki plik nie istnieje sprobuj jeszcze raz');
If Istnieje(nazwa)=TRUE then
begin
onaz:=nazwa;
writeln('Nazwa pliku to ', nazwa);
end;
until Istnieje(nazwa)=TRUE;
end;
If onaz<>' ' then
begin
nazwa:=onaz;
Writeln('Nazwa pliku to ', nazwa);
end;
end;
If (mz='1') or (mz='2') then
begin
Assign(dan,nazwa);
Reset(dan);
If filesize(dan)>=0 then
begin
d1:=0;
Repeat
seek(dan,d1);
read(dan,rec[d1]);
d1:=d1+1;
io:=io+1;
Until eof(dan);
Close(dan);
clrscr;
Write('Wczytywanie .');
Delay(150);
Write('.');
Clrscr;
write('WCZYTANO :)');
Delay(900);
end;
zmiennej d1 przypisana jest wartość 0, zmienna ta indeksuje tablicę rec w której pierwszy element kryje się pod indeksem 1, o ile to jedyny błąd to wystarczy rec zadeklarować jako rec:array[0…1000] of osoba;