私は Ada を初めて使用し、ファイルに値を追加する際に Ada でファイルを操作することを理解するのが難しいと感じています。Cで行う方が簡単なようです。とにかく、良い情報が見つからないので、誰かが私を助けてくれることを願っています.
最初に次のことを宣言します。
PACKAGE Seq_Float_IO IS NEW Ada.Sequential_IO (Element_Type => Long_Float);
Flo_File : Seq_Long_Float_IO.File_Type;
次に、ファイル「bvalues.dat」を作成します。
Seq_Long_Float_IO.Create(File => Flo_File, Name => "bvalues.dat");
そして、「Largest」という名前の変数を書くには、次を使用します。
Seq_Long_Float_IO.Write(File => Flo_File, Item => Largest);
コードを実行するたびに、ファイル「bvalues.dat」が破棄され、プログラムの実行中に新しい値が書き込まれます。これは私にとっては問題ありません。コードで行っていることは、いくつかの値の最大値を見つけて、最大の要素をファイル "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;
コンパイルすると、次のようになります。
例外
Name_Error => |の場合
「Name_Error」は見えません a-sequio.ads:111 の非表示宣言、5 行目のインスタンス a-textio.ads:298 の非表示宣言 a-ioexce.ads:23 の非表示宣言
作成 (ファイル => Flo_File、モード => Out_File、名前 => "bvalues.dat"); | |
「作成」は非表示 a-sequio.ads:73 の非表示宣言、5 行目のインスタンス a-textio.ads:90 の非表示宣言
15.
Out_File の代わりに Seq_Float_IO.Out_File を入れても変わりません。