关于网友提出的“delphi中的参数修饰符out与var的区别是什么”问题疑问,本网通过在网上对“delphi中的参数修饰符out与var的区别是什么”有关的相关答案进行了整理,供用户进行参考,详细问题解答如下:
问题:delphi中的参数修饰符out与var的区别是什么
描述:本帖最后由 seleron 于 2014-08-03 12:59:07 编辑
delphioutvar
delphi中的参数修饰符out与var的区别是什么?
如下代码为何Integer类型out参数可以接受传入的值,而string类型的out参数却不接受传入的值呢?
procedure Hello1(out s:integer);
begin
showmessage(inttostr(s)); //显示5
s:=S+1;
showmessage(inttostr(s)); //显示6
end;
procedure TForm1.Button3Click(Sender: TObject);
var
A:integer;
begin
A:=5;
showmessage(inttostr(A)); //显示5
Hello1(A);
showmessage(inttostr(A)); //显示6
end;
procedure Hello2(out s:String);
begin
showmessage(s); //显示空
s:='Hello,'+ s;
showmessage(s); //显示Hello,
end;
procedure TForm1.Button4Click(Sender: TObject);
var
A:string;
begin
A:='World!';
showmessage(A); //显示World!
Hello2(A);
showmessage(A); //显示Hello,
end;
解决方案1: out类型的变量是为传出值使用的
对于传入的值是无效的
解决方案2: 你的例子中,代码是有效。仅在integer时有效,在String类型是无效物,不管怎样,不宜通过它来传递值。因为,Delphi说明,就是这样说的。可能它随着版本不同,有怕不同吧。事物总是在发展的。
解决方案3: out传递给过程的实际参数不必进行初始化。
解决方案4: 在过程或函数中,out主要用于COM和CORBA技术,Delphi解释:
An out parameter, like a variable parameter, is passed by reference. With an out parameter, however, the initial value of the referenced variable is discarded by the routine it is passed to. The out parameter is for output only; that is, it tells the function or procedure where to store output, but doesn't provide any input.
关键就是“它唯一的用处就是让写过程的程序员警惕一下,这个参数没有什么初始值的,只能给它赋值,而永远不要去用它的值。”
1、相同:var与out修饰的参数,都是通过指针引导的变量参数;它们都可以外出输出值;
2、区别:var修饰的参数,可以带入值,并在过程或函数使用;Out修饰的参数,带入值无效。
以上介绍了“delphi中的参数修饰符out与var的区别是什么”的问题解答,希望对有需要的网友有所帮助。
本文网址链接:http://www.codes51.com/itwd/826458.html