我正在学习 Ada,我需要对文件操作进行一些说明。我只有一种类型:float,我必须创建 2 个存储浮点值的文件(使用附加操作)。所以我为浮点类型实例化了一个包,然后我声明了 2 个文件变量 X_File 和 Y_File。然后我放了例外,以防文件不存在。
WITH Ada.Text_IO;
WITH Ada.Sequential_IO;
PROCEDURE TestWrite6 IS
PACKAGE Seq_Float_IO IS NEW Ada.Sequential_IO (Element_Type => Float);
X_File : Seq_Float_IO.File_Type;
Y_File : Seq_Float_IO.File_Type;
BEGIN
Seq_Float_IO.Open (File => X_File, Mode => Seq_Float_IO.Append_File,
Name => "xvalues.dat");
exception
when Seq_Float_IO.Name_Error =>
Seq_Float_IO.Create (File => X_File, Mode => Seq_Float_IO.Out_File,
Name => "xvalues.dat");
Seq_Float_IO.Open (File => Y_File, Mode => Seq_Float_IO.Append_File,
Name => "yvalues.dat");
exception
when Seq_Float_IO.Name_Error =>
Seq_Float_IO.Create (File => Y_File, Mode => Seq_Float_IO.Out_File,
Name => "yvalues.dat");
END TestWrite6;
对于每个文件 xvalues.dat 和 yvalues.dat ,我有两个单独的例外。现在在编译时,我收到错误消息:
16.
17. Seq_Float_IO.Open (File => Y_File, Mode => Seq_Float_IO.Append_File, Name => "xvalues.dat");
18. exception
|
>>> exception handler not permitted here
19. when Seq_Float_IO.Name_Error =>
看来我只能为 xvalues.dat 提供 1 个例外,而不能为 yvalues.dat 提供第二个例外。我究竟做错了什么?
非常感谢...
一些修改:编写一个通用过程来打开和附加文件中的值:
WITH Ada.Sequential_IO;
WITH Ada.Float_Text_IO;
PROCEDURE TEST is
package Seq_Float_IO is new Ada.Sequential_IO (Element_Type => Float);
X_File : Seq_Float_IO.File_Type;
procedure Open_Data(File : in out Seq_Float_IO.File_Type;
Name : in String) is
BEGIN
begin
Seq_Float_IO.Open (
File => File,
Mode => Seq_Float_IO.Append_File,
Name => );
exception
when Seq_Float_IO.Name_Error =>
Seq_Float_IO.Create (
File => File,
Mode => Seq_Float_IO.Out_File,
Name => );
end;
END Open_Data;
x : CONSTANT Float := 2.0;
BEGIN --main program
Open_Data(X_File, "xvalues.dat");
Seq_Float_IO.Write(File => X_File,Item => x);
Seq_Float_IO.Close(File => X_File);
END TEST;
在过程 Open_Data 中。我将 Name => 的 2 个字段留空,因为我不知道该放什么。
而且我还放了 File => File...这似乎不行!!!