Что касается простого String
в Аде, то это то, что определенная строка, такая как ваша File_Name
, должна быть фиксированной длины;но разные строки могут быть разной длины.
Вы можете написать
S1 : String := "1234";
S2 : String := "12345";
, в этом случае S1 имеет длину 4, а присваивания для него должны быть длины 4. Вы можете написать
S1 := "abcd";
, но если вы попытаетесь написать
S1 := "pqrst";
или
S1 := S2;
, вы получите Constraint_Error
.
.Если в качестве параметров String используются подпрограммы, например, Open_Data
, параметр String Name
принимает длину и, конечно, значение!фактического параметра в вызове.Таким образом, вы можете сказать
Open_Data (X_File, "x.dat");
Open_Data (Y_File, "a_very_long_name.dat");
У вас раньше были проблемы с
procedure Open_Data(File : in out Seq_Float_IO.File_Type;
Name : in String) is
begin
Seq_Float_IO.Open (File => File,
Mode => Seq_Float_IO.Append_File,
Name => ????);
Я не хочу просто сказать вам ответ, поэтому рассмотрим часть File => File
.Первый File
- это имя формального параметра Seq_Float_IO.Open
, а второй File
- то, что должно быть передано, в этом случае Open_Data
'File
параметр.
Можетпомогите, если я укажу, что я мог бы написать выше звонки как
Open_Data (File => X_File, Name => "x.dat");
Open_Data (File => Y_File, Name => "a_very_long_name.dat");