1. Связать файловую переменную с именем файла (Assign).
2. Открыть существующий файл (Reset)
3. Установить указатель файла за последним компонентом файла
Seek(файловая_переменная,FileSize(файловая_переменная))
4. Записать компонент в файл (Write)
5. Закрыть файл (Close).
Порядок замены содержимого записи
1. Связать файловую переменную с именем файла (Assign).
2. Открыть существующий файл (Reset)
3. Установить указатель файла перед компонентом с нужным номером Seek(файловая_переменная,номер_компоненты)
4. Прочитать компоненту из файла (Read)
5. Установить указатель файла перед компонентом с нужным номером Seek(файловая_переменная,номер_компоненты)
6. Записать компонент в файл (Write)
7. Закрыть файл (Close).
Пример. Создать файл записей, содержащих сведения о сдаче студентами сессии. Структура записи: фамилии студента, номер группы, результаты сдачи трех экзаменов. Распечатать список студентов, получающих стипендию. Условие получения стипендии – средний балл больше 5. Предусмотреть все виды корректировки файла.
Program Zapisi;
Uses Crt;
Const
FileName:String[10]=’Stud.dat’; {имя Файла}
Type Sved=record
Fio:String[50]; {Фамилия}
Nom:String[10]; {Номер группы}
b1,b2,b3:0..10; {Результаты сдачи экзаменов}
sb:Real; {Средний балл}
end;
Var
Fv,Fv1:File of Sved;
Rv: Sved;
i,N:Byte;
{Создание файла записей}
Procedure Vvod;
Begin
Assign (Fv,FileName);
Rewrite(Fv);
While True do
With Rv do
Begin
Clrscr;
Write ('ФИО (признак окончания ввод ***)-->');
ReadLn(Fio);
If Fio=’***’ then
Begin
Close(Fv);
Exit;
end;
Write ('Группа -->');
ReadLn(Nom);
Write ('Оценки -->');
ReadLn(b1,b2,b3);
sb:=(b1+b2+b3)/3;
Write(Fv,Rv);
End
end;
{Вывод исходного файла записей}
Procedure Vivod;
Begin
clrscr;
WriteLn ('Сведения о студентах:');
WriteLn ('Фамилия Группа Оценки Средний балл');
Assign (Fv,FileName);
Reset(Fv);
While not EOF(Fv) do
With Rv do
begin
Read(Fv,Rv);
WriteLn (Fio:10,Nom:10,b1:2,b2:2,b3:2,sb:5:1);
end;
Close (Fv);
Repeat Until KeyPressed;
end;
{Вывод списка студентов, получающих стипендию}
Procedure Obr;
Begin
clrscr;
WriteLn ('Сведения о студентах:');
WriteLn ('Фамилия Группа Оценки Средний балл');
Assign (Fv,FileName);
Reset(Fv);
While not EOF(Fv) do
With Rv do
begin
Read(Fv,Rv);
If sb>5 then
WriteLn(Fio:10,Nom:10,b1:2,b2:2,b3:2,sb:5:1);
end;
Close (Fv);
Repeat Until KeyPressed;
end;
{Расширение файла за счет внесения новых компонент}
Procedure Rasch;
Begin
Assign (Fv,FileName);
Reset(Fv);
Seek(Fv,FileSize(Fv));
While True do
With Rv do
Begin
Clrscr;
Write ('ФИО (признак окончания ввод ***)-->');
ReadLn(Fio);
If Fio=’***’ then
Begin
Close(Fv);
Exit;
end;
Write ('Группа -->');
ReadLn(Nom);
Write ('Оценки -->');
ReadLn(b1,b2,b3);
sb:=(b1+b2+b3)/3;
Write(Fv,Rv);
End
end;
{Замена содержимого записи}
Procedure Zam_zapisi;
Begin
Clrscr;
Assign (Fv,FileName);
Reset(Fv);
Write (’Введите номер заменяемой записи N=’);
ReadLn (N);
Seek(Fv,N-1);
Read(Fv,Rv);
Write ('ФИО: ',Fio,'-->');
ReadLn(Fio);
Write ('Группа: ',Nom,' -->');
ReadLn(Nom);
Write ('Оценки: ',b1:2,b2:2,b3:2,' -->');
ReadLn(b1,b2,b3);
sb:=(b1+b2+b3)/3;
Seek(Fv,N-1);
Write(Fv,Rv);
Close(Fv);
end;
{Удаление записи из файла}
Procedure Udal_zapisi;
Begin
Clrscr;
Assign (Fv,FileName);
Reset(Fv);
Write (’Введите номер удаляемой записи N=’);
ReadLn (N);
Assign (Fv1,’Temp.dat’); {создаем промежуточный файл}
Rewrite(Fv1); {открываем его для записи}
For i:=1 to N-1 do {считываем из исходного файла и записываем в промежуточный файл все компоненты до удаляемой}
Begin
Read(Fv,Rv);
Write(Fv1,Rv);
end;
Read(Fv,Rv); {считываем удаляемую компоненту}
{ но не записываем}
While not EOF(Fv) do {считываем все остальные}
{компоненты до конца файла}
Begin
Read(Fv,Rv);
Write(Fv1,Rv);
end;
Close(Fv);
Close(Fv1);
{переписываем данные из промежуточного файла в исходный}
Assign (Fv,FileName);
Rewrite(Fv);
Assign (Fv1,’Temp.dat’);
Reset(Fv1);
While not EOF(Fv1) do
Begin
Read(Fv1,Rv);
Write(Fv,Rv);
end;
Close(Fv);
Close(Fv1);
end;
{Основная программа}
Begin
Vvod;
Vivod;
Obr;
Rasch;
Zam_zapisi;
Udal_zapisi;
End.
Текстовые файлы
Текстовый файл – это файл, состоящий из компонент, являющихся строками. Текстовый файл трактуется Turbo Pascal как совокупность строк переменной длины. Доступ к каждой строке возможен лишь последовательно, начиная с первой. При создании текстового файла в конце каждой строки ставится специальный признак EOLN (End Of Line – конец строки), а в конце всего файла – признак EOF (End Of File – конец файла).
Формат описания:
1-ый способ:
Type
имя_файлового_типа=Text;
Var
файловая_переменная: имя_файлового_типа;
2-ой способ:
Var
файловая_переменная : Text;
Дата: 2018-11-18, просмотров: 414.