Ada_Ru форум

Обсуждение языка Ада

Адский ввод-вывод. Теперь атрибуты Write ...

Оставить новое сообщение

Сообщения

Александр Никольников
Адский ввод-вывод. Теперь атрибуты Write ...
2005-08-31 11:08:38

Здравствуйте !

 

Пытаюсь заменить предопределённый атрибут Write на собственный.

Написал :

 

with Ada.Streams;

procedure Stream is

type Date is record

Day : Integer;

end record;

 

procedure Date_Write (Stream : access Ada.Streams.Root_Stream_Type'Class; Item : in Date) is

begin

Integer'Write (Stream, Item.Day);

end Date_Write;

 

for Date'Write use Date_Write;

begin

null;

end Stream;

При компиляции получаю :

stream.adb:4:09: warning: no more representation items for type "Date" defined at line 4

stream.adb:13:09: representation item appears too late

 

Как это правильно сделать ?

 

--

Саша

Александр Никольников wrote:

При компиляции получаю :

stream.adb:4:09: warning: no more representation items for type "Date" defined at line 4

stream.adb:13:09: representation item appears too late

 

Как это правильно сделать ?

 

type Date is record

Day : Integer;

end record;

 

procedure Date_Write (Stream : access Ada.Streams.Root_Stream_Type'Class; Item : in Date);

 

for Date'Write use Date_Write;

 

 

procedure Date_Write (Stream : access Ada.Streams.Root_Stream_Type'Class; Item : in Date) is

begin

Integer'Write (Stream, Item.Day);

end Date_Write;

 

А ещё лучше вынести объявление типа в отдельный пакет.

 

PS. Если кратко, то секрет здесь в том, что объявить какую либо особенность типа можно только до первого использования типа.

 

 

-- Vadim Godunko

 

Technoserv A/S

Rostov-on-Don, Russia

On Wed, Aug 31, 2005 at 03:55:44PM +0400, Vadim Godunko wrote:

Александр Никольников wrote:

При компиляции получаю :

stream.adb:4:09: warning: no more representation items for type "Date" defined at line 4

stream.adb:13:09: representation item appears too late

 

Как это правильно сделать ?

 

type Date is record

Day : Integer;

end record;

 

procedure Date_Write (Stream : access

Ada.Streams.Root_Stream_Type'Class; Item : in Date);

 

for Date'Write use Date_Write;

 

 

procedure Date_Write (Stream : access

Ada.Streams.Root_Stream_Type'Class; Item : in Date) is

begin

Integer'Write (Stream, Item.Day);

end Date_Write;

 

А ещё лучше вынести объявление типа в отдельный пакет.

 

PS. Если кратко, то секрет здесь в том, что объявить какую либо особенность типа можно только до первого использования типа.

 

 

Спасибо. Уже разобрался ;)

 

--

Саша

Новое сообщение:
Страницы: 1

Чтобы оставить новое сообщение необходимо Зарегистрироваться и Войти