Чтение записи из файла на Аде?

Всякий раз, когда я иду читать запись из файла в Аде, я всегда получаю сообщение об ошибке. Цель программы состоит в том, чтобы прочитать (из файла) целое число, указывающее, сколько элементов необходимо записать, в фамилию, состоящую (не более) из 12 букв, имя, состоящее (не более) из 12 букв, и значение с плавающей запятой, а затем сохраните их в записи.

Это было из AdaGIDE:

record2.adb:32:04: недопустимый список параметров в вызове (используйте -gnatf для получения подробной информации)

Мой код:


with Ada.Text_IO, Ada.float_Text_IO, ada.Integer_Text_IO;
use Ada.Text_IO, Ada.float_Text_IO, ada.Integer_Text_IO;

procedure Record2 is

   TYPE Testrec IS
      record
         test1 : string (1..12);
         test2 : string (1..12);
         test3 : float;
   END RECORD;

   T:  Testrec;   
   Lt: Integer; 
   numitem: integer;

   random1:   Ada.Text_IO.File_Type;

begin -- Record2

   Ada.Text_IO.Open(File => random1, Mode => Ada.Text_IO.In_File, Name => "info1.dat");

   Get_Line(File => random1, Item => Testrec, Last => Lt);

   Put(T.test1); 
   Put(T.Test2);
   Put(T.Test3);

end Record2;

содержимое info1.dat (без лишних пробелов и строк, только от "L" до "0":

LastName    FirstName   4.00

Мои проблемы - это Get_Line, которую я знаю. Фамилия дополняется пробелами, заполняя 12 символов, то же самое касается имени. Затем поплавок берется за его значение в целом. Что именно я делаю неправильно?


ada
person Lance    schedule 26.11.2011    source источник


Ответы (1)


По сути, вы используете Get_Line, который считывает строки, чтобы попытаться прочитать экземпляр записи.

Так как это выглядит как домашнее задание (и это нормально), я дам вам подсказку:

Попробуйте прочитать поля по отдельности.

Этого недостаточно, чтобы полностью решить вашу проблему, но это продвинет вас дальше, и с этого момента вы сможете попытаться решить все остальное.

person Marc C    schedule 26.11.2011
comment
Я бы использовал Get_Line, чтобы прочитать всю строку, а затем прочитать поля из полученной строки. - person Simon Wright; 26.11.2011