Как изменить часть данных в типизированном файле? - Free Pascal

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

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

У меня есть типизированный файл file.tx, в нем есть данные. Вот так они образуются. Мне нужно в другой процедуре изменить конкретную строчку или удалить. Какие функции для этого использовать? Или напишите пример.
Листинг программы
  1. rocedure Prosmotr;
  2. Begin
  3. clrscr;
  4. y:=0;
  5. Assign(V,'FILE1.tx');
  6. Reset(V);
  7. While not Eof(V) do
  8. begin
  9. y:=y+1;
  10. read(V,N);
  11. writeln('Adres: ',N.Adres);
  12. writeln('Ploshad: ',N.Ploshad:0:1);
  13. writeln('Data: ',N.Data);
  14. writeln('Stoimost: ',N.Stoimost:0:2);
  15. writeln('Summa: ',N.Summa:0:2);
  16. writeln;
  17. if (y=3)
  18. then begin
  19. readln;
  20. clrscr;
  21. end;
  22. end;
  23. close(V);
  24. readln;
  25. End;

Решение задачи: «Как изменить часть данных в типизированном файле?»

textual
Листинг программы
  1. program test;
  2.  
  3. type
  4.   TInfo = record
  5.     a: integer;
  6.     b: string[10];
  7.   end;
  8.   TFile = file of TInfo;
  9. var
  10.   x: TInfo;
  11.   f: TFile;
  12.   i: integer;
  13. begin
  14.   Assign(f, 'test.dat');
  15.   rewrite(f);
  16.   for i := 0 to 9 do
  17.   begin
  18.     x.a := i;
  19.     Str(Pi + i: 10: 5, x.b);
  20.     Write(f, x);
  21.   end;
  22.   Close(f);
  23.  
  24.   reset(f);
  25.   while not EOF(f) do
  26.   begin
  27.     Read(f, x);
  28.     writeln(x.a: 5, x.b: 15);
  29.   end;
  30.   Close(f);
  31.  
  32.   FileMode := 2;//fmOpenReadWrite; {разрешаем открывать на чтение и запись}
  33.   reset(f);
  34.   seek(f, 3);
  35.   x.a := 400;
  36.   x.b := 'replaced';
  37.   Write(f, x);
  38.   seek(f, FileSize(f));
  39.   Close(f);
  40.  
  41.   writeln('-------');
  42.  
  43.   reset(f);
  44.   while not EOF(f) do
  45.   begin
  46.     Read(f, x);
  47.     writeln(x.a: 5, x.b: 15);
  48.   end;
  49.   Close(f);
  50.  
  51. end.

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

  1. Объявление переменных и типов данных — Тип данных TInfo, который представляет собой запись (record) с полями a: integer и b: string[10] — Тип данных TFile, который представляет собой файл (file) с типом данных TInfo — Переменная x: TInfo — Переменная f: TFile — Переменная i: integer
  2. Открытие файла 'test.dat' для записи (режим rewrite) с помощью функции Assign
  3. Цикл от 0 до 9, который выполняет следующие действия: — Присваивает полю a значение i — Форматирует и записывает поле b с помощью функции Str — Записывает объект x в файл с помощью функции Write
  4. Закрытие файла с помощью функции Close
  5. Открытие файла 'test.dat' для чтения и записи (режим fmOpenReadWrite) с помощью функции Assign
  6. Чтение файла до конца с помощью цикла while not EOF — Чтение объекта x из файла с помощью функции Read — Вывод значений полей a и b с помощью функции writeln
  7. Закрытие файла с помощью функции Close
  8. Изменение значения поля a объекта x на 400 и поля b на 'replaced'
  9. Запись измененного объекта x в файл с помощью функции Write
  10. Переход к последнему байту файла с помощью функции seek
  11. Закрытие файла с помощью функции Close
  12. Вывод на экран содержимого файла 'test.dat' с помощью цикла while not EOF — Чтение объекта x из файла с помощью функции Read — Вывод значений полей a и b с помощью функции writeln
  13. Закрытие файла с помощью функции Close
  14. Завершение программы Обратите внимание, что этот код может работать некорректно, если файл 'test.dat' существует и содержит данные. Этот код перезапишет существующий файл без предупреждения.

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


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

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

8   голосов , оценка 4 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы