Ада-95. Компилятор GNAT
66ac8edd

Пакет AdaDirect_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.



Содержание раздела