У меня проблема с функцией, которую я написал в 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;
Я явно что-то пропустил. Что не так с тем, что я здесь создал?
Вы объявляете массив записи, содержащей массив. Что такое Comms.Buffer_Type'Size? – egilhh
Обратите внимание, что '' Size' дает вам размер типа в _bits_. Тем не менее, я не вижу проблемы, если «Comms.Buffer_Type» огромен. – ajb
Да, оказалось, что он был довольно большой. Тем не менее, я не ожидал хранения. Мое решение состояло в том, чтобы изменить тип массива на тип доступа для Extract_Field_Type. – Ogre