Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Процедура удаления записи в Pascal

Moskalenko`M. Ученик (205), на голосовании 9 лет назад
Прошу умельцев объяснить как работает этот блок программы ...
не понятны следующие строки
// i:=0;
while not eof(TmpFile) do
begin
read(TmpFile, r);
i:=i+1;
if i <> n then
write(r1, r);
end;// не могу понять что тут происходит...

procedure DelInform;
var
r1: file of interpol;
i: integer;
n: integer;
r: interpol;
begin
writeln('введите номер записи, которую нужно удалить (0 для отмены): ');
readln(n);
if n <> 0 then
begin
writeln('Удалить запись №: ', n);
Assign(r1, 'info.bak');
Rewrite(r1);
Assign(TmpFile, 'database.dat');
Reset(TmpFile);
i:=0;
while not eof(TmpFile) do
begin
read(TmpFile, r);
i:=i+1;
if i <> n then
write(r1, r);
end;
Close(r1);
Close(TmpFile);
Rename(TmpFile, 'database.bak');
assign (TmpFile,'database.bak');
reset (TmpFile);
if TmpFile = TmpFile then
begin {Файл .BAK существует}
close(TmpFile); {Закрываем его}
erase(TmpFile); {и уничтожаем}

writeln('Запись удалена');
end;
Rename(r1, 'database.dat');
end;
end;
Голосование за лучший ответ
Gennady Гений (60517) 9 лет назад
Сначала просим ввести номер записи для удаления. Затем открываем файл базы для чтения и создаем выходной файл.

i:=0;
while not eof(TmpFile) do begin // пока не конец файла
read(TmpFile, r); // читаем из файла базы запись
i:=i+1; // увеличиваем счетчик
if i <> n then write(r1, r); // если считанная запись не та, которую надо удалить записываем ее в выходной файл
end;
Close(r1); // после завершения обработки входного файла закрываем его и выходной.
Close(TmpFile);
Похожие вопросы