阿达:从文件中读取

时间:2012-03-20 17:48:19

标签: file ada

我正在尝试在Long_Float中读取包含Adawith 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

问题是character被定义为value。如果我希望Long_Float属于11.0, 23.0, 35.0 and 46.0类型,以便我稍后可以在我的程序中使用数字{{1}},那么该如何进行?

感谢。

1 个答案:

答案 0 :(得分:5)

基本上,您实例化Sequential_IO以对表示(长)浮点数的二进制值执行I / O操作。这不是你文件中的内容。您的文件包含浮点数的文本表示。

在你的例子中,摆脱Sequential_IO并使用普通的Text_IO.Open打开文件,使用Long_Float_Text_IO来获取Get()值。

这就是您收到类型冲突错误消息的原因,您尝试在Long_Float_Text_IO File_Type变量上执行Sequential_IO操作。