2014-10-08 4 views
0

У меня проблема с функцией, которую я написал в Ada 95. Когда функция вызывается, я получаю файл Storage_Error перед выполнением первого оператора (который является сообщением журнала). Закомментировав заявления и тестирование, я сузили проблему вплоть до следующей строки:Объявление Storage_Error для массива

Field_Values : Message_Field_Array; 

Соответствующие определения типа для Message_Field_Array являются следующие:

type Extract_Field_Type is 
record 
    Field  : String (1 .. Comms.Buffer_Type'Size) := (others => ' '); 
    Char_Count : Integer := 0; 
end record; 

type Message_Field is (MESSAGE, DATETIME, EPOCH, GPS_CLASS, OBJECT_NAME, TRAIN, LAT, LNG); 

type Message_Field_Array is array (Message_Field'Range) of Extract_Field_Type; 

Я явно что-то пропустил. Что не так с тем, что я здесь создал?

+0

Вы объявляете массив записи, содержащей массив. Что такое Comms.Buffer_Type'Size? – egilhh

+0

Обратите внимание, что '' Size' дает вам размер типа в _bits_. Тем не менее, я не вижу проблемы, если «Comms.Buffer_Type» огромен. – ajb

+0

Да, оказалось, что он был довольно большой. Тем не менее, я не ожидал хранения. Мое решение состояло в том, чтобы изменить тип массива на тип доступа для Extract_Field_Type. – Ogre

ответ

1

Ваши источники являются неполными, но я предполагаю, что ваша ошибка заключается в использовании 'Size, где вы имеете в виду 'Length.