Spec-Zone.ru › Ada 95
Справочник Ada 95

A.10.7 Ввод-вывод символов и строк

Статическая семантика

Для элемента типа Character доступны следующие процедуры:
procedure Get(File : in File_Type; Item : out Character);
procedure Get(Item : out Character);
После пропуска всех символов конца строки и страницы, считывает следующий символ из указанного файла ввода и возвращает значение этого символа в параметр Item.
Исключение End_Error генерируется, если попытка пропустить разделитель файла завершается неудачно.
procedure Put(File : in File_Type; Item : in Character);
procedure Put(Item : in Character);
Если длина строки указанного файла вывода ограничена (т.е. не имеет стандартного значения ноль), и текущий номер столбца превышает её, вызывается New_Line со смещением один. В противном случае выводит заданный символ в файл.
procedure Look_Ahead (File : in File_Type;
Item : out Character;
End_Of_Line : out Boolean);
procedure Look_Ahead (Item : out Character;
End_Of_Line : out Boolean);
Mode_Error генерируется, если режим файла не In_File. Устанавливает End_Of_Line в True, если находится в конце строки, включая конец страницы или конец файла; в каждом из этих случаев значение Item не определено. В противном случае End_Of_Line устанавливается в False, а Item устанавливается в следующий символ (без его потребления) из файла.
procedure Get_Immediate(File : in File_Type;
Item : out Character);
procedure Get_Immediate(Item : out Character);
Считывает следующий символ, управляющий или графический, из указанного файла или файла по умолчанию. Mode_Error генерируется, если режим файла не In_File. End_Error генерируется, если достигнут конец файла. Текущие номера столбца, строки и страницы для файла не изменяются.
procedure Get_Immediate(File : in File_Type;
Item : out Character;
Available : out Boolean);
procedure Get_Immediate(Item : out Character;
Available : out Boolean);
Если из указанного файла или файла по умолчанию доступен символ (управляющий или графический), то символ считывается; Available имеет значение True, а Item содержит значение этого символа. Если символ недоступен, то Available имеет значение False, а значение Item не определено. Mode_Error генерируется, если режим файла не In_File. End_Error генерируется, если достигнут конец файла. Текущие номера столбца, строки и страницы для файла не изменяются.
Для элемента типа String доступны следующие процедуры:
procedure Get(File : in File_Type; Item : out String);
procedure Get(Item : out String);
Определяет длину заданной строки и пытается выполнить столько операций Get для последовательных символов строки (в частности, не выполняется ни одна операция, если строка пуста).
procedure Put(File : in File_Type; Item : in String);
procedure Put(Item : in String);
Определяет длину заданной строки и пытается выполнить столько операций Put для последовательных символов строки (в частности, не выполняется ни одна операция, если строка пуста).
procedure Get_Line(File : in File_Type;
Item : out String;
Last : out Natural);
procedure Get_Line(Item : out String; Last : out Natural);
Считывает последовательные символы из указанного файла ввода и присваивает их последовательным символам указанной строки. Чтение прекращается, если достигнут конец строки. Чтение также прекращается, если достигнут конец строки до достижения конца строки; в этом случае Skip_Line (фактически) вызывается со смещением 1. Значения символов, которые не были присвоены, не определены.
Если символы были считаны, возвращает в Last значение индекса, такое что Item(Last) — последний прочитанный символ (индекс первого прочитанного символа — Item'First). Если символы не были считаны, возвращает в Last значение индекса, на единицу меньшее Item'First. Исключение End_Error генерируется, если попытка пропустить разделитель файла завершается неудачно.
procedure Put_Line(File : in File_Type; Item : in String);
procedure Put_Line(Item : in String);
Вызывает процедуру Put для заданной строки, а затем процедуру New_Line со смещением один.

Рекомендации по реализации

Процедуры Get_Immediate должны быть реализованы с небуферизованным вводом. Для устройства, такого как клавиатура, ввод должен быть «доступен», если символ уже набран, тогда как для файла на диске ввод всегда должен быть доступен, кроме случая конца файла. Для файла, связанного с устройством, подобным клавиатуре, любые функции редактирования строк в подлежащей операционной системе должны быть отключены во время выполнения Get_Immediate.
ПРИМЕЧАНИЯ
26 Get_Immediate может быть использован для чтения одного символа с клавиатуры «немедленно»; то есть без ожидания конца строки. При вызове Get_Immediate без параметра Available вызывающая сторона будет ждать, пока символ не станет доступным.
27 В параметре строки-литерала Put символы открывающей и закрывающей скобки строки не выводятся. Каждый удвоенный символ открывающей скобки строки в заключённой строке выводится как один символ открывающей скобки строки, как следствие правила для строк-литералов (см. 2.6).
28 Строка, прочитанная с помощью Get или записанная с помощью Put, может занимать несколько строк. Реализация может предположить, что некоторые внешние файлы не содержат разделителей страниц, в этом случае Get_Line и Skip_Line могут возвратиться, как только будет прочитан символ конца строки.


Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API