Удаление записи из типизированного файла. - Pascal

Узнай цену своей работы

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

Какими способами можно реализовать данную задачу? Из типизированного файла нужно удалить запись, номер которой указывается пользователем. Программу писать не обязательно, просто подкиньте идею =)

Решение задачи: «Удаление записи из типизированного файла.»

textual
Листинг программы
procedure DelZap(var f:t_file);
var n,i:integer;
    rab:rabotnik;
begin
write('Удалить запись № ');
readln(n);
ResFile(f);
if (filesize(f)<n)or(n<0) then
 begin
  writeln('В файле нет такой записи');
  close(f);
  write('Press Enter...');
  readln;
  exit;
 end;
seek(f,n-1);
for i:=n-1 to filesize(f)-2 do
 begin
  seek(f,i+1);
  read(f,rab);
  seek(f,i);
  write(f,rab);
 end;
seek(f,filesize(f)-1);
truncate(f);
close(f);
write('Press Enter...');
readln
end;

Объяснение кода листинга программы

  1. Создается процедура DelZap, которая принимает в качестве параметра файл (переменная f типа t_file).
  2. Выводится сообщение «Удалить запись №» и считывается число n.
  3. Вызывается функция ResFile(f), которая перезаписывает файл.
  4. Проверяется условие: если размер файла (filesize(f)) меньше n или n меньше 0, то выводится сообщение «В файле нет такой записи» и файл закрывается.
  5. Если условие не выполняется, то файл открывается заново, и его позиция устанавливается в n-1.
  6. Затем в цикле for происходит следующее:
    • seek(f,n-1) устанавливает позицию чтения/записи файла в n-1.
    • for i:=n-1 to filesize(f)-2 do
      • seek(f,i+1) устанавливает позицию чтения/записи файла в i+1.
      • read(f,rab) считывает данные из файла в переменную rab.
      • seek(f,i) устанавливает позицию чтения/записи файла в i.
      • write(f,rab) записывает данные из переменной rab в файл.
    • end;
    • seek(f,filesize(f)-1) устанавливает позицию чтения/записи файла в конец файла.
  7. Вызывается функция truncate(f), которая обрезает файл.
  8. Файл закрывается с помощью функции close(f).
  9. Выводится сообщение «Press Enter...».
  10. Считывается символ новой строки с помощью функции readln.
  11. Программа завершается.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

13   голосов , оценка 3.923 из 5
Похожие ответы