Выходит ошибка В 25 (1.pas(25:Ошибка времени выполнения: Попытка считывания за концом текстового файла) помогите пожалуйста. Напишите правильно прогу
program q;
type
Worker=record
Name:string;
Days:Integer;
Salary,Pay:Real;
end;
var
Days:Integer;
W:array [0..100000] of Worker;
n:Integer;
Total:Real;
procedure Load(const Name:string);
var
F:Text;
begin
assign(F,'Workers.txt');
reset(f);
readln(F,Days);
n:=0;
while not Eof(F) do
begin
n:=n+1;
readln(F,W[n].Name);
readln(F,W[n].Days,W[n].Salary); - тут выдаёт ошибку ошибка
end;
Close(F);
Writeln('Считано строк: ',n);
end;
procedure Calc;
begin
Total:=0;
for i:integer:=1 to n do
begin
W[i].Pay:=(W[i].Salary*W[i].Days)/Days;
Total:=Total+W[i].Pay;
end;
end;
procedure Save(const Name:string);
var
F:Text;
begin
Assign(F,Name);
Rewrite(F);
Writeln(F,'+-------…-------+---+---…---+---…----+');
Writeln(F,'| Фамилия |Дни| Оклад |Зарплата|');
Writeln(F,'+-------…-------+---+---…---+---…----+');
for i:integer:=1 to n do
Writeln(F,'|',W[i].Name,'':40- Length(W[i].Name),'|',W[i].Days:3,'|',W[i].Salary:10:2,'|',W[i].Pay:10:2,'|');
Writeln(F,'+-------…-------+---+---…---+---…----+');
Writeln(F,'|Итого |', Total:10:2,'|');
Writeln(F,'+-------…-------+---+---…---+---…----+');
Close(F);
end;
procedure SortByName;
var
Stop:Boolean;
Last,Cmp:Integer;
Temp:Worker;
begin
Last:=n;
Cmp:=0;
repeat
Stop:=True;
last:=last-1;
for i:integer:=1 to Last do
begin
cmp:=cmp+1;
if W[i].Name>W[i+1].Name then
begin
Temp:=W[i];
W[i]:=W[i+1];
W[i+1]:=Temp;
Stop:=False;
end;
end;
until Stop;
Writeln('Сравнений при сортировке по имени: ',Cmp);
end;
procedure SortByPay;
var
Stop:Boolean;
Last,Cmp:Integer;
Temp:Worker;
begin
Last:=n;
Cmp:=0;
repeat
Stop:=True;
last:=last-1;
for i:integer:=1 to Last do
begin
cmp:=cmp+1;
if W[i].Pay>W[i+1].Pay then
begin
Temp:=W[i];
W[i]:=W[i+1];
W[i+1]:=Temp;
Stop:=False;
end;
end;
until Stop;
Writeln('Сравнений при сортировке по зарплатe: ',Cmp);
end;
begin
Load('5.txt');
Calc;
Save('Pay.txt');
SortByName;
Save('ByName.txt');
SortByPay;
Save('ByPay.txt');
Readln;
end.