我想在日志文件中输出一个标题行,然后在数据之前输出一行“-”。为此,我创建了一个标题字符串,然后输出相同数量的“-”。
但是下面的代码总是失败并出现 CONSTRAINT_ERROR,因为生成的字符串不是 1024 个字符。在 Ada 中,字符串分配需要完全相同的长度,而不仅仅是足够的容量。
选项 1) 是计算确切的长度,但这对未来的变化很脆弱。选项 2) 是使用 String 以外的东西。
procedure F() is
Msg : String(1..1024);
begin
Open_Log();
Msg := FLS(" Field1", 12) &
"|" & FLS(" Field2", 12) &
"|" & FLS(" Field3", 16);
Log_To_File("# " & Msg);
Log_To_File("# " & Fill_String(Msg'Last, '-'));
end;