Как изменить часть данных в типизированном файле? - 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' существует и содержит данные. Этот код перезапишет существующий файл без предупреждения.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д