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

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

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

У меня есть типизированный файл file.tx, в нем есть данные. Вот так они образуются. Мне нужно в другой процедуре изменить конкретную строчку или удалить. Какие функции для этого использовать? Или напишите пример.
rocedure Prosmotr; 
Begin 
clrscr; 
y:=0; 
Assign(V,'FILE1.tx'); 
Reset(V); 
 
While not Eof(V) do 
begin 
y:=y+1; 
read(V,N); 
writeln('Adres: ',N.Adres); 
writeln('Ploshad: ',N.Ploshad:0:1); 
writeln('Data: ',N.Data); 
writeln('Stoimost: ',N.Stoimost:0:2); 
writeln('Summa: ',N.Summa:0:2); 
writeln; 
 
if (y=3) 
then begin 
readln; 
clrscr; 
end; 
 
end; 
close(V); 
readln; 
End;

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

textual
Листинг программы
program test;
 
type
  TInfo = record
    a: integer;
    b: string[10];
  end;
  TFile = file of TInfo;
var
  x: TInfo;
  f: TFile;
  i: integer;
begin
  Assign(f, 'test.dat');
  rewrite(f);
  for i := 0 to 9 do
  begin
    x.a := i;
    Str(Pi + i: 10: 5, x.b);
    Write(f, x);
  end;
  Close(f);
 
  reset(f);
  while not EOF(f) do
  begin
    Read(f, x);
    writeln(x.a: 5, x.b: 15);
  end;
  Close(f);
 
  FileMode := 2;//fmOpenReadWrite; {разрешаем открывать на чтение и запись}
  reset(f);
  seek(f, 3);
  x.a := 400;
  x.b := 'replaced';
  Write(f, x);
  seek(f, FileSize(f));
  Close(f);
 
  writeln('-------');
 
  reset(f);
  while not EOF(f) do
  begin
    Read(f, x);
    writeln(x.a: 5, x.b: 15);
  end;
  Close(f);
 
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
Похожие ответы