Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/arduino/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
String 程序Get(项目:输出字符串);(在函数中)_String_Function_Ada - Fatal编程技术网

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
   ...