String 程序Get(项目:输出字符串);(在函数中)
我试图返回一个全局变量的字符串值,并希望在稍后的过程中使用使用它的函数String 程序Get(项目:输出字符串);(在函数中),string,function,ada,String,Function,Ada,我试图返回一个全局变量的字符串值,并希望在稍后的过程中使用使用它的函数 function get_name return String is begin Put_line("Your name?"); Get(name); -- name is in "globals" put(name); return name; end get_name; 包文件= package globals is name : String(1..20) ; end globals; 这里是函数中使用的“G
function get_name return String
is begin
Put_line("Your name?");
Get(name); -- name is in "globals"
put(name);
return name;
end get_name;
包文件=
package globals
is
name : String(1..20) ;
end globals;
这里是函数中使用的“Get”=
procedure Get (Item : out String);
现在,如果我在一个过程中使用函数,它会编译,但是=
启动时,没有执行get,程序“创建”一个“跳过”行
那么,是否有可能使用此过程获取函数
如果调用过程
Get(Item:out String)
,那么读取的字符数必须正好是20个字符
如果要使用函数get
,则需要使用其值初始化变量,或将其作为参数传递。e、 g
x : string := get_line; -- functional version that will read an entire line
或
至于为什么您的输入跳过get,而不读取任何内容,这可能是因为您以前读取了一些输入,并且在输入中留下了换行符/行尾标记。如果你阅读数字,这种情况经常发生
e、 g.输入为
34\nThe next line\n
如果您读取一个整数,文件指针将显示您在
34\nThe next line\n
..^
然后你要求一个get\u行
,结果你只会读到行的末尾(你现在所在的位置),并且你会有一个空字符串,而没有读到下一行
解决方案是在每次get之后都有一个跳过行
。
所以
谢谢,就在get的帮助下,我终于成功了:)
34\nThe next line\n
..^
get(number); skip_line;
declare
input : string := get_line;
begin
...