У меня тут некоторая проблемка с типизированным файлом. Прошу помощи.
Итак, суть задачи: создать основную программу и модуль. В основной выводится меню и считывается номер пункта. В модуле расположены процедуры на пункты меню.
Создается типизированный файл(справочник 2), куда вводятся данные о номенклатурном номере изделия, наименовании изделия и цене изделия. После создания файл можно распечатать и откорректировать(удалить запись, добавить запись или редактировать запись).
Собственно все работает, кроме корректирови и удаления записи.

выкладываю кусок модуля с процедурами на создание файла, корректировку и удаление записей.
unit modmenu4;
interface
uses crt;
type
tsprav2=record{собственно запись данных}
nom_num:integer;
name_izdel:string;
price:integer
end;
ztsprav2=array[1..30] of tsprav2;{тип записи}
var
name2:string;
n,m,i:integer;
flag,fl:boolean;
answer:char;
zap_sprav2:ztsprav2;
sprav2:file of tsprav2;
procedure vvod_sprav2;
procedure udal_zap_sprav2;
procedure corr_zap_sprav2;
implementation
procedure vvod_sprav2;{ввод типизированного файла}
var
i:integer;
name2,answer:string;
begin
i:=0;
repeat
writeln('vvedite imya faila-spravo4nika 2:');
readln(name2);
assign(sprav2,name2);
{$I-} reset (sprav2); {$I+}
if ioresult=0 then
begin
writeln('imya faila *',name2,'* yje est');
close(sprav2);
fl:=false;
end
else
begin
rewrite(sprav2);
fl:=true;
end;
until fl;
flag:=true;
while(flag=true) do
begin
inc(i);
writeln('Zapis N',i);
write('>Vvedite nom.nomer izdeliya:');
readln(zap_sprav2[i].nom_num);
write('>vvedite naimenovanie izdeliya:');
readln(zap_sprav2[i].name_izdel);
write('>vvedite cenu izdeliya:');
readln(zap_sprav2[i].price);
write(sprav2,zap_sprav2[i]);
writeln('prodoljat zapis? <y/n>');
readln(answer);
if (answer='n') or (answer='N') then
flag:=false;
end;
close(sprav2);
end;
процедура на удаление отдельных строк записи
procedure udal_zap_sprav2;
var
flag,flag1:boolean;
j,i:integer;
temp:file of tsprav2;
namet:string;
begin
repeat
writeln('vvedite imya faila-spravo4nika 2:');
readln(name2);
assign(sprav2,name2);
{$I-} reset (sprav2); {$I+}
if ioresult<>0 then
begin
writeln('imya faila *',name2,'* net');
fl:=false;
end
else
begin
reset(sprav2);
fl:=true;
end;
until fl;
namet:='temp2';
assign(temp,namet);
rewrite(temp);
m:=filesize(sprav2);
writeln('N':3,'nom.nomer':10,'name izdeliya':16,'cena':8);
writeln;
for j:=1 to m do
begin
read(sprav2,zap_sprav2[j]);
writeln('',j,'':3,zap_sprav2[j].nom_num:10,zap_sprav2[j].name_izdel:16,zap_sprav2[j].price:8);
end;
while flag=true do
begin
Write('Vvedite nomer redactiruemoy zapisi: ');{дальше этого момента прога не работает}
readln(i);
if (i<1) or (i>m) then
begin
WriteLn('Neverniy nomer!');
writeln;
writeln('Prodoljat vvod nomera? <y,n>');
readln(answer);
if (answer='n') or (answer='N') then
flag:=false;
close(sprav2);
close(temp);
erase(temp);
end
else
flag:=false;
end;
for j:=1 to i do
begin
read(sprav2,zap_sprav2[j]);
write(temp,zap_sprav2[j]);
end;
for j :=i to m-1 do
begin
zap_sprav2[j]:=zap_sprav2[j+1];
dec(m);
end;
seek(temp,filesize(temp));
for j:=i to m do
write(temp,zap_sprav2[j]);
close(sprav2);
close(temp);
erase(sprav2);
rename(temp,name2)
end;
процедура для корректировки отдельных строк записи
procedure corr_zap_sprav2;
var i,j,m:integer;
zap:ztsprav2;
s:integer;
s1,namet:string;
fl:boolean;
temp:file of tsprav2;
begin
repeat
writeln('vvedite imya faila-spravo4nika 2:');
readln(name2);
assign(sprav2,name2);
{$I-} reset (sprav2); {$I+}
if ioresult<>0 then
begin
writeln('imya faila *',name2,'* net');
fl:=false;
end
else
begin
reset(sprav2);
fl:=true;
end;
until fl;
namet:='temp3';
assign(temp,namet);
rewrite(temp);
writeln('Spravo4nik 2');
writeln('N':4,'nom.nomer':10,'name izdeliya':16,'cena':8);
writeln;
m:=filesize(sprav2);
for j:=1 to m do
begin
read(sprav2,zap_sprav2[j]);
write('',j,'':4,zap_sprav2[j].nom_num:10,zap_sprav2[j].name_izdel:16,zap_sprav2[j].price:8);
writeln;
end;
fl:=true;
repeat
begin
Writeln('--> Vvedite nomer redactiruemoy zapisi: ');{здесь тоже аналогично}
readln(i);
if (i<1) or (i>m) then
begin
WriteLn('Neverniy nomer!');
writeLn;
end
else
fl:=false;
end;
until fl=false;
m:=filesize(sprav2);
for j:=1 to i do
read(sprav2,zap_sprav2[j]);
write(temp,zap_sprav2[j]);
Write('Vvedite novoe zna4enie i najmite *ENTER*');
with zap_sprav2[i] do
begin
Write('Nom.nomer izdeliya: ',nom_num,'--->');
ReadLn(s);
nom_num:=s;
Write('Naimenovanie izdeliya: ',name_izdel,'--->');
ReadLn(s1);
name_izdel:=s1;
Write('cena izdeliya: ',price,'--->');
ReadLn(s);
price:=s;
seek(temp,filesize(temp));
write(temp,zap_sprav2[i]);
seek(temp,filesize(temp));
for j:=i+1 to m do
read(sprav2, zap_sprav2[j]);
write(temp, zap_sprav2[j]);
end;
close(sprav2);
close(temp);
erase(sprav2);
rename(temp,name2);
end;
end.
.Помогите пожалуйста....уже замучалась....
