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