Рефераты. Основы программирования на языке Паскаль

-                   закрыть созданный файл (Close).

Для доступа к компонентам последовательного файла (например, для просмотра содержимого файла на экране или для обработки компонент в целях включения их в качестве фрагментов в программу обработки каких-либо данных и т.п.) следует:

-                   присвоить файлу имя (Assign);

-                   открыть уже существующий файл (Reset);

-                   считать текущую компоненту из файла в рабочую область памяти (как правило, типа запись со структурой компоненты), (Read);

-                   выполнить обработку информации (например, вывести на экран поля записи);

-                   закрыть файл (Close).

Возможны три типа корректировки файла как прямого, так и последовательного доступа:

1. Расширение файла за счет внесения новых компонент.

2. Полная замена содержимого компоненты.

3. Замена каких-либо полей отдельных компонент.

Замена содержимого компонент отдельных записей или замена полей отдельных записей будет рассмотрена в следующем подразделе при изучении корректировки компонент файлов прямого доступа.

Добавление новых записей в файл последовательного доступа выполняется путем записи компонент в конце файла. Маркер конца файла при этом переносится. Естественно, на физическом носителе при этом должно иметься свободное пространство.

Для записи новых компонент в конце имеющегося файла необходимо:

-                   присвоить файлу имя (Assign);

-                   открыть уже существующий файл (Reset);

-                   установить указатель файла за последней компонентой (Seek (FV, File sise (FV)):

-                   создать в специально выделенной области памяти (как правило записи) новую компоненту;

-                   записать новую компоненту в файл (write);

-                   закрыть файл (Close).

Пример. Организовать последовательный файл с именем PRIM bibl.dos в подкаталоге Prim каталога TURBO на диске С, т.е. C:\TURBO\bibl.dos. Компонента должна иметь структуру: индекс книги, порядковый номер экземпляра, фамилию, инициалы первых трех авторов (если их несколько), название книги. Блок создания файла оформить в виде процедуры с именем org. Блок доступа к компонентам файла оформить в виде процедуры с именем obr., а блок корректировки – в виде процедуры с именем Rash.

             Program Prim47;

    type books=record              {базовая запись}

           nomer:integer;

           avtor:string[16];

           nazv:string[30];

           index:integer;     end;

      var  bf:file of books;       { описать файловую переменную }

           rb:books;               { участок памяти со структурой }

                                   { компоненты файла }

   procedure org;

        begin  assign(bf,'C:\TURBO\PRIM\bibl.dos');

               Rewrite(bf);

          with rb do          { работать с записью rb без уточненных имен }

          while True do

        begin   writeln('ввести номер книги');

                   readln(nomer);

              if nomer=9999 then  {9999 – признак окончания ввода данных}

               Begin  close(bf);  Exit end;

                   writeln('ввести имя автора');

                   readln(avtor);

                   writeln('ввести название книги');

                   readln(nazv);

                   writeln('ввести значение индекса');

                   readln(index);

                   write(bf,rb); { записать компоненту из rb в файл }

        end; end;

    procedure Obr;

       Begin  Assign(bf,'C:\TURBO\PRIM\bibl.dos');

             Reset(bf);

             with rb do

             while not Eof(bf) do{ выйти из цикла, когда закончится файл }

         begin read(bf,rb);

             writeln(nomer:5,avtor:16,Nazv:10,index:6); { вывод на экран }

        end; Close(bf);  end;

    procedure Rash;

       begin Assign(bf,'C:\TURBO\PRIM\bibl.dos');

             Reset(bf);

             Seek(bf,Filesize(bf)); { установить указатель на конец файла }

             with rb do

             while True do

         begin writeln('ввести номер');          readln(nomer);

             if nomer=9999 then begin Close(bf);Exit end;

             writeln('ввести имя автора');       readln(avtor);

             writeln('ввести название книги');   readln(nazv);

             writeln('ввести значение индекса'); readln(index);

             write(bf,rb); end;end;

    BEGIN                              { основная программа }

             Org; Obr; Rash; Obr;  readln;

    END.

При создании больших программ их части удобно создавать в виде отдельных файлов (объектов), которые затем с помощью директивы компилятора {$i...} можно объединить в одну программу. Это удобно еще и тем, что несколько программистов могут создавать различные программы, что в несколько раз может ускорить процесс их создания.

Создадим ту же программу, что и Prim 47, только пообъектно, тогда процедуру Org запишем в C:\TURBO\Org1.pas, процедуру Obr – в C:\TURBO\Orb1.pas, процедуру Rash – в C:\TURBO\Rash1.pas, а вызывающую (основную программу – в C:\TURBO\Prim. 48, в которой предусмотрим подключение объектов – процедур Org, Obr, Rash к основной программе через директивы компилятора $i.

   procedure Org1;

     begin

       assign(bf,'C:\TURBO\bibl.dos');

               Rewrite(bf);

          with rb do

          while True do

        begin   writeln('ввести номер книги');

                   readln(nomer);

                   if nomer=9999 then

               begin  close(bf);  Exit;

               end;

                   writeln('ввести имя автора');

                   readln(avtor);

                   writeln('ввести название книги');

                   readln(nazv);

                   writeln('ввести название индекса');

                   readln(index);

                   write(bf,rb);

         end;

    end;

  procedure Obr1;

    begin 

             Assign(bf,'C:\TURBO\bibl.dos');

             Reset(bf);

     with rb do

             while not eof(bf) do

        Begin read(bf,rb);

             writeln(nomer:5,avtor:16,Nazv:10,index:6);

        end;

             Close(bf);

          writeln('нажмите enter'); readln;

    end;

procedure Rash1;

       begin Assign(bf,'C:\TURBO\bibl.dos');

             Reset(bf);

             Seek(bf,Filesize(bf));

             with rb do

             while True do

        begin writeln('введите номер'); readln(nomer);

             if nomer=9999 then begin Close(bf);exit end;

Страницы: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26



2012 © Все права защищены
При использовании материалов активная ссылка на источник обязательна.