IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения.
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

> типизированный файл, косяк с корректировкой и удалением записей.
сообщение
Сообщение #1


только вперед...
*

Группа: Пользователи
Сообщений: 20
Пол: Женский

Репутация: -  1  +


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

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.

.
Помогите пожалуйста....уже замучалась.... mega_chok.gif

Сообщение отредактировано: what is -


--------------------
Завтра будет. Лучше???
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

Сообщений в этой теме


 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 19.04.2024 10:31
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name