Порядок расширения файла за счет внесения новых компонент
Поможем в ✍️ написании учебной работы
Поможем с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой

 

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, просмотров: 361.