Я очень плохо знаком с Ada, и мне трудно понять одну вещь - работать с файлами в Ada, когда дело доходит до добавления некоторых значений в файл.Мне кажется, в Си легче сделать это. В любом случае, я не нашел хорошей информации, и я надеюсь, что кто-то может мне здесь помочь.
Сначала я объявляю следующее:
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
Create (File => Flo_File), Mode => Out_File, Name => "bvalues.dat");|
«Создать» - невидимое невидимое объявление в a-sequio.ads:73, экземпляр в строке 5 - невидимое объявление в a-textio.ads:90
15.
Это не изменится, если я вместо Seq_Float_IO.Out_File добавлю также Seq_Float_IO.Out_Fileпросто Out_File.