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

Пакет AdaSequential_IO


Стандартный настраиваемый пакет Ada.Sequential_IO позволяет нам создавать файлы, состоящие из компонентов любого типа.

При этом, должно соблюдаться единственное условие: тип компонентов должен быть ограничен (constrained).

Базовое содержимое настраиваемого пакета Ada.Sequential_IO идентично пакету Ada.Text_IO, за исключением того, что процедуры Get и Put

соответственно заменены процедурами Read и Write, и эти процедуры будут работать с типом данных для которого была произведена конкретизация настраиваемого пакета.

Кроме этого, отсутствует понятие строки текста, и, следовательно, нет функции End_Of_Line и процедур Skip_Line, New_Line.

Примером использования этого пакета может служить следующее:

with Ada.Sequential_IO; -- настраиваемый пакет

with Personnel_Details; -- имеет тип записи "Personnel" use Personnel_Details;

with Produce_Retirement_Letter;

procedure Sequential_Demo is

package Person_IO is new Ada.Sequential_IO(Personnel);

Data_File : Person_IO.File_type; A_Person : Personnel;

begin

Person_IO.Open(Data_File, In_File, "person.dat");

while not Person_IO.End_Of_File(Data_File) loop

Person_IO.Read(Data_File, A_Person);

if A_Person.Age > 100 then

Produce_Retirement_Letter(A_Person); end if; end loop;

Close(Data_File); end Sequential_Demo;

Заметим, что в данном примере мы не акцентируем внимание на содержимом пакета Personnel_Details, а только указываем в комментарии, что он описывает тип записи Personnel.

После открытия файла, он последовательно обрабатывается от позиции начала файла, и до тех пор, пока не будет достигнут конец файла, или будет выполнена одна из процедур Reset или Close.

Прямой доступ к элементам файла не возможен (отсюда и название: Ada.Sequential - последовательный).



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