尝试将 ada 程序的命令行参数分配给字符串变量时,我遇到了一些问题。
这是我的主要程序:
with Ada.Command_Line; use Ada.Command_Line;
procedure proc is
cli_exception : exception;
filename : String (1..Argument(1)'length);
usage : String (1..31);
begin
usage := "Usage: ./proc [filename]";
if Argument_Count /= 1 then
raise cli_exception;
end if;
for arg in 1..Argument_Count loop
case arg is
when 1 =>
filename := Argument(arg);
when others =>
null;
end case;
end loop;
put_line("filename is: " & filename);
exception
when e: cli_exception =>
put_line(usage);
end proc;
这里的问题在于过程的声明部分,其中设置了字符串“文件名”的上限。如果没有给出 CLI 参数,那么 Argument(1) 将在过程开始之前抛出异常,因为没有参数 #1。
输出是:
raised CONSTRAINT_ERROR : a-comlin.adb:65 explicit raise
有没有其他方法可以在不使用无界字符串且不选择任意数字的情况下定义该字符串变量的大小(因为完全限定的文件名可能会变得非常大)?
-谢谢