"Адское" программирование Ada-95 -Компилятор GNAT



              

Пакет Ada.Direct_IO



Пакет Ada.Direct_IO

Пакет Ada.Direct_IO построен поверх пакета Ada.Sequential_IO.Он предусматривает возможность прямого обращения к необходимой записи в файле, определения размера файла и определения текущего индекса.Кроме этого, он дополнительно позволяет открывать файлы в режиме - Inout_File (чтение/запись).Такие средства, в совокупности с подходящим индексирующим пакетом, должны позволять построение пакета файловой обработки очень высокого уровня.

Следующий пример демонстрирует использование файлов с прямым доступом:

with Ada.Integer_Text_IO; use Ada.Integer_Text_IO;with Ada.Direct_IO; -- настраиваемый пакетwith Personnel_Details; -- имеет: use Personnel_Details; -- тип записи "Personnel", -- процедуру "Display_Personnel", -- и т.д. ...with Display_Menu; -- внешняя процедура отображения менюprocedure Direct_Demo is package Person_IO is new Direct_IO(Personnel); Data_File : Person_IO.File_type; A_Person : Personnel; Option : Integer; Employee_No : Integer;begin Person_IO.Open(Data_File, Inout_File, "Person.dat"); loop Display_Menu; Get_Option(Option); case Option is when 1 => Get(Employee_No); Set_Index(Positive_Count(Employee_No)); Read(Data_File, A_Person); Display_Person(A_Person); when 2 => Get(Employee_No); Set_Index(Positive_Count(Employee_No)); Read(Data_File, A_Person); Get_New_Details(A_Person); Write(Data_File, A_Person); when 3 => exit; when others => Put("not a great option!"); end case; end loop; Close(Data_File); end Direct_Demo;

Здесь, для краткости подразумевается, что записи о служащих сохраняются в порядке номеров служащих - Employee_No.

Также заметим, что мы не акцентируем внимание на содержимом внешних модулей: пакете Personnel_Details и процедуре Display_Menu.









Содержание  Назад  Вперед