File Ada:从文件中读取

File Ada:从文件中读取,file,ada,File,Ada,我试图读取Ada中单个列为Long\u Float值的文件,如下所示: 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 :

我试图读取
Ada
中单个列为
Long\u Float
值的文件,如下所示:

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
任何帮助都将不胜感激

更新代码:

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
Long\u Float
类型,以便我可以在以后的程序中使用数字
11.0、23.0、35.0和46.0
,那么如何继续


谢谢。

基本上,您正在实例化顺序IO,以便对表示(长)浮点数的二进制值进行I/O。那不是你档案里的内容。您的文件包含浮点数的文本表示形式

在您的示例中,去掉顺序IO,使用纯文本IO.Open打开文件,使用长浮点文本IO获取()值


这就是为什么您会收到类型冲突错误消息,您正在尝试对长\u Float\u Text\u IO File\u type变量执行顺序\u IO操作。

@Marc谢谢。它可以工作,但我希望能够使用文件
fx.txt
中的值作为
Long\u浮动
。如何使变量
获取这些值?见我更新的帖子。我可以定义
value
来存储一个值数组,这是另一个步骤。我投赞成票。@ycallecharan你误读了我的部分答案。使用Long\u Float\u Text\u IO.Get()获取值,不要用Text\u IO.Get()替换。因此,将值作为长浮点数放回去,并使用正确的Get命令。@Marc非常感谢。现在很好用。我很抱歉误解了你先前的评论。