Я пытаюсь прочитать файл с одного столбца Long_Float
значений в Ada
следующим образом:Ada: чтение из файла
with Ada.Text_IO; use Ada.Text_IO;
with Ada.Long_Float_Text_IO;
with Ada.Sequential_IO;
procedure Test_Read is
package Seq_Float_IO is new Ada.Sequential_IO (Element_Type => Long_Float);
Input_File : File_Type;
value : Long_Float;
begin
Seq_Float_IO.Open (File => Input_File, Mode => Seq_Float_IO.In_File, Name => "fx.txt");
while not End_OF_File (Input_File) loop
Seq_Float_IO.Read (Input_File, value);
Ada.Long_Float_Text_IO.Put (Item => value, Fore => 3, Aft => 5, Exp => 0);
end loop;
Seq_Float_IO.close (File => Input_File);
end Test_Read;
Я получаю много сообщений об ошибках при компиляции:
17. Seq_Float_IO.Open (File => Input_File, Mode => Seq_Float_IO.In_File, Name => "fx.txt");
|
>>> expected private type "Ada.Sequential_Io.File_Type" from instance at line 10
>>> found private type "Ada.Text_Io.File_Type"
18. while not End_OF_File (Input_File) loop
19. Seq_Float_IO.Read (Input_File, value);
|
>>> expected private type "Ada.Sequential_Io.File_Type" from instance at line 10
>>> found private type "Ada.Text_Io.File_Type"
файл fx.txt
содержит, например:
11.0
23.0
35.0
46.0
Любой Хель p будет наиболее оценена.
обновленный код:
with Ada.Text_IO; use Ada.Text_IO;
procedure Test_Read is
Input_File : File_Type;
value : Character;
begin
Ada.Text_IO.Open (File => Input_File, Mode => Ada.Text_IO.In_File, Name => "fx.txt");
while not End_OF_File (Input_File) loop
Ada.Text_IO.Get (File => Input_File, Item => value);
Ada.Text_IO.Put (Item => value);
Ada.Text_IO.New_Line;
end loop;
Ada.Text_IO.Close (File => Input_File);
end Test_Read;
Но теперь выход:
1
1
.
0
2
3
.
0
3
5
.
0
4
6
.
Проблема заключается в том, что value
определяется как character
. Если я хочу, чтобы value
был типа Long_Float
, так что я могу использовать числа 11.0, 23.0, 35.0 and 46.0
позже в моей программе, а затем как это сделать?
Спасибо.
@ Marc C Спасибо. Он работает, но я хотел бы иметь возможность использовать значения в файле 'fx.txt' как' Long_Floats'. Как заставить переменную 'значение' принимать эти значения? ** См. Мой обновленный пост **. Я могу определить 'значение' для хранения массива значений, и это еще один шаг. 1 голос вверх. – yCalleecharan
@yCalleecharan Вы неправильно читаете часть моего ответа. Вы используете * Long_Float_Text_IO.Get() * для получения значений, не заменяя их Text_IO.Get(). Поэтому верните значение как Long_Float и используйте правильный Get. –
@ Marc C Большое спасибо. Теперь он отлично работает. Прошу прощения за неправильное толкование ваших предыдущих комментариев. – yCalleecharan