Найдите ошибку

Создать типизированный файл, содержащий данные о наименованиях продукции молокозавода, поступивших в продажу: название продукта, дата изготовления (три поля записи: год, месяц и число), срок хранения в днях, закупочная цена (дробное число). Переписать в текстовый файл и вывести на экран данные о продуктах, выпущенный в июле 2004 года;
Program Lab_12;
Type
TData = record
year,month,day:integer;
end;
TMilk = record
nazv:string;
srok:integer;
cena:real;
data:Tdata;
end;
var
milk: TMilk;
i,j: integer;
Fmilk: file of TMilk;
Ftext: text;
otvet: char;
begin
assign(Fmilk,'Fmilk.dat');
rewrite(Fmilk);
assign(Ftext,'Ftext.txt');
rewrite(Ftext);
writeln('Введите данные:');
writeln;
repeat
 with milk do begin
 write('Введите название*:',nazv); readln(nazv);
 writeln('Введите дату'); readln(data);
 write('Введите год',data.year);
 write('Месяц:',data.month);
 write('День:',data.day);
 write('Срок хранения:',srok);
 write('Закупочная цена:',cena);
 end;
write(Fmilk,milk);
write('Продолжать ввод?(Д/Н)');
readln(otvet);
until((otvet='Н')or(otvet='*н'));
close(Fmilk);
reset(Fmilk);
writeln(' Продукты, выпущенные в июле 2004 года: |');
for i:=1 to 66 do write('-');write('|');
writeln;
write(' Название | ');
write('Год | ');
write('Месяц | ');
write('День | ');
write('Срок хранения | ');
write('Закуп.цена | ');
writeln;
for i:=1 to 66 do write('-');write('|');
writeln;
writeln(FText,' Продукты, выпущенные в июле 2004 года:*: |');
for i:=1 to 66 do write(FText,'-');write(FText,'|');
writeln(FText);
write(FText,' Название | ');
write(FText,'Год | ');
write(FText,'Месяц | ');
write(FText,'День | ');
write(FText,'Срок хранения | ');
write(FText,'Закуп.цена* | ');
writeln(FText);
for i:=1 to 66 do write(FText,'-');write(FText,'|');
writeln(FText);
 
while not(eof(Fmilk)) do with milk do begin
read(Fmilk,milk);
if ((data.year=2004)and(data.month=7)) then
with milk do begin
 
 write(' ');
 while(length(nazv)<8) do nazv:=nazv+' ';
 write(nazv,' | ');
 write(data.year,' | ');
 write(' ',data.month,' | ');
 write(' ',data.day,' | ');
 write(' ',srok,' | ');
 write(' ',cena:2:2,' |');
 writeln;
 for j:=1 to 66 do write('-');write('|');
 writeln;
 
 write(FText,' ');
 while(length(nazv)<8) do nazv:=nazv+' ';
 write(FText,nazv,' | ');
 write(FText,data.year,' | ');
 write(FText,' ',data.month,' | ');
 write(FText,' ',data.day,' | ');
 write(FText,' ',srok,' | ');
 write(FText,' ',cena:2:2,' |');
 writeln(FText);
 for j:=1 to 66 do write(FText,'-');write(FText,'|');
 writeln(FText);
 end;
end;
close(Fmilk);
close(Ftext);
end.
3 ответа

Найдите ошибку
что это вы нас каждый день ребусами озадачиваете? что пишет Паскаль?


М-мм. Где-то между Program Lab_12; и end.. Одну ошибку вижу сразу - полное отсутствие комментариев. Программист он сначала читатель, а уже потом писатель. Вот Вы писатель, поэтому Ваш код ковырять никто не хочет. А если бы Вы были читателем, то возможно ошибку бы и искать не пришлось.


для начала, ввод данных должен быть такой:
writeln('Введите данные:');
 writeln;
 repeat
 with milk do begin
 write('Введите название: '); readln(nazv);
 writeln('Введите дату:');
 write('Введите год: '); Readln(data.year);
 write('Месяц: '); Readln(data.month);
 write('День: '); Readln(data.day);
 write('Срок хранения: '); Readln(srok);
 write('Закупочная цена: '); Readln(cena);
 end;
 write(Fmilk, milk);
 write('Продолжать ввод?(Д/Н)');
 readln(otvet);
 until ((otvet = 'Н') or (otvet = 'н'));
а вообще зачем каждый раз заставлять этот файл заполнять?! Проверяйте, если файл есть - то спрашивайте, перезаписывать его или нет. Иначе запаришься продукты вносить каждый раз..