Типизированный и текстовый файл - Turbo Pascal

Формулировка задачи:

Задание: Средствами текстового редактора создать файл. Каждые 5 строк текстового файла содержат соответственно название издательства, фамилию автора, название книги, величину тиража и пустую строку. Программным образом вывести содержимое этого файла на экран, расположив в каждой строке экрана название издательства, фамилию автора, название книги и величину тиража. Создать первую процедуру с параметрами, в которой каждые 4 строки текстового файла в виде записи с 4 полями размещаются в типизированный файл (5-7 компонентов). Создать вторую процедуру с параметрами для вывода содержимого типизированного файла на экран. С клавиатуры добавить и типизированный файл запись (записи), используя метод концевого значения. Определить писателей, книги которых напечатаны наибольшим тиражом. Их фамилии занести в конец текстового файла в отдельные строки. Вывести содержимое текстового файла на экран. Далее содержимое каждых 4 строк, содержащих информацию об одном авторе занести в строковую переменную. В полученной строке поменять местами фамилию и тираж и разместить между всеми словами по 3 пробела. Распечатать исходные и преобразованные строки. Дополнительных массивов не использовать. _______________________________________ Первый абзац выполнил, второй не полностью, так как вылетает несовместимость типов (закомментировал звездочками место ошибк). Прошу помочь с ошибкой в коде, а также с третьим абзацем. Код:
type
b1 = record
Pub,Auth,Book:string[25];
Value:integer;
end;
tfile = file of b1;
 
 
procedure Type_Input(var f11:textfile; var f22:tfile; s1:string; j:integer; zap1:b1);
var i:integer;
begin
assignfile(f11,'file.txt');
assignfile(f22,'file.dat');
rewrite(f22);
reset(f11);
for i:=1 to 5 do
with zap1 do
begin
readln(f11,s1);
zap1.Pub:=s1;
readln(f11,s1);
zap1.Auth:=s1;
readln(f11,s1);
zap1.Book:=s1;
readln(f11,j);
zap1.Value:=j;
if s1='' then
write(f22);
write(f22,zap1);
end;
end;
 
procedure Type_Output(var f22:tfile; s1:string; zap1:b1);
begin
assignfile(f22, 'file.dat');
reset(f22);
while not eof(f22) do
begin
read(f22,s1);   {**********}
with zap1 do begin
write(Pub,Auth,Book,Value);
end;
end;
closefile(f22);
end;
 
 
 
 
 
var
f1:textfile;
f2:tfile;
s:string;
zap:b1;
k:integer;
 
begin
 
writeln('Издательство           ','Автор          ','Название книги     ','Тираж');
writeln('------------------------------------------------------------------------');
assignfile(f1, 'file.txt');
reset(f1);
while not eof(f1) do
begin
readln(f1,s);
write(s);
write('           ');
if s='' then
writeln;
end;
closefile(f1);
 
writeln;
 
Type_Input(f1,f2,s,k,zap);
Type_Output(f2,s,zap);
 
 
 
 
readln;
end.
Добавлено через 1 час 26 минут UPD : со вторым абзацем и ошибкой разобрался, но все еще прошу помощи, начиная с добавления.

Код к задаче: «Типизированный и текстовый файл - Turbo Pascal»

textual
const
  tName = 'file.txt'; dName = 'file.dat';
type
  TBook = record
    Pub, Aut, Tit: String[31];
    Cir: Integer;
  end;
  TBookFile = file of TBook;
 
procedure txt2dat;
var ft: Text; fd: TBookFile; t: TBook;
begin
  Assign(ft,tName); Assign(fd,dName);
  Reset(ft); Rewrite(fd);
  while not SeekEof(ft) do with t do begin
    ReadLn(ft,Pub);
    ReadLn(ft,Aut);
    ReadLn(ft,Tit);
    ReadLn(ft,Cir);
    ReadLn(ft);
    Write(fd,t);
  end;
  Close(ft); Close(fd);
end;
procedure ShowFromTxt;
var ft: Text; t: TBook;
begin
  Assign(ft,tName);
  Reset(ft);
  while not SeekEof(ft) do with t do begin
    ReadLn(ft,Pub);
    ReadLn(ft,Aut);
    ReadLn(ft,Tit);
    ReadLn(ft,Cir);
    ReadLn(ft);
    WriteLn(Pub,'   ',Aut,'   ',Tit,'   ',Cir);
  end;
  Close(ft);
end;

6   голосов, оценка 3.833 из 5


СОХРАНИТЬ ССЫЛКУ