Чтение в записи из файла в Ada? - PullRequest
0 голосов
/ 26 ноября 2011

Всякий раз, когда я иду читать записи из файла в Аде, я всегда получаю сообщение об ошибке.Целью программы является чтение (из файла) целого числа, которое представляет собой количество элементов, которые необходимо записать, в фамилии, состоящей из (максимум) 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, который я знаю. LastName дополняется пробелами, заполняющими 12 символов, то же самое относится и к FirstName. Затем значение float берется в целом за его значение. Что именно я делаю неправильно?

1 Ответ

1 голос
/ 26 ноября 2011

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

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

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

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

...