Выходит ошибка В 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.


Ответы (0 шт):