我首先声明如下:
PACKAGE Seq_Float_IO IS NEW Ada.Sequential_IO (Element_Type => Long_Float);
Flo_File : Seq_Long_Float_IO.File_Type;
Seq_Long_Float_IO.Create(File => Flo_File, Name => "bvalues.dat");
然后写一个名为“最大”的变量,我使用:
Seq_Long_Float_IO.Write(File => Flo_File, Item => Largest);
我看到每次运行代码时,“bvalues.dat”文件都会被销毁,并且在程序运行时会写入新的值。这对我来说没关系。我在代码中所做的是找到一些值的最大值,并将最大的元素存储在文件“bvalues.dat”中。
现在假设我必须在同一个程序中用不同的值集重复这个操作(比如用一个外循环),并且我需要存储每个值集的最大元素。因此,我需要能够将每个集合的每个最大值附加到文件“bvalues.dat”中。如何做到这一点?
Seq_Long_Float_IO.Open(File => Flo_File, Mode => Append_File, Name => "bvalues.dat");
比如说,在外循环中的一个索引被递增,以接受下一组值,其中最大的元素将被计算,然后像上面那样写入
Seq_Long_Float_IO.Write(File => Flo_File, Item => Largest); ?
新信息:
我得到一个错误:
40. Seq_Long_Float_IO.Open(File => Flo_File, Mode => Append_File, Name => "bvalues.dat");
|
>>> "Append_File" is not visible
>>> non-visible declaration at a-sequio.ads:58, instance at line 8
>>> non-visible declaration at a-textio.ads:56
测试文件:
WITH Ada.Text_IO;
WITH Ada.Sequential_IO;
PROCEDURE TestWrite5 IS
PACKAGE Seq_Float_IO IS NEW Ada.Sequential_IO (Element_Type => Float);
Flo_File : Seq_Float_IO.File_Type;
BEGIN
Seq_Float_IO.Open (File => Flo_File, Mode => Seq_Float_IO.Append_File,
Name =>"bvalues.dat");
exception
when Name_Error =>
Create (File => Flo_File, Mode => Out_File, Name => "bvalues.dat");
END TestWrite5;
-
例外
-
|
“名称错误”不可见
a-sequio不可见声明。ads:111,第5行实例
在a-textio不可见声明。ads:298
a-IOEXE不可见声明。ads:23
-
|
“创建”不可见
在a-textio不可见声明。ads:90
15
如果我也把Seq\u Float\u IO.Out\u文件放进去,而不是只把Out\u文件放进去,它不会改变。