delphi 调用有外部参数的function或procedure时,string类型的参数值为什么传不进去呢

procedureTForm1.Button1Click(Sender:TObject);varnum:Integer;snum:string;beginnum:=2;s... procedure TForm1.Button1Click(Sender: TObject);
var
num : Integer;
snum : string;
begin
num := 2;
snum := 'ABC';
MyFunction(num, snum);
ShowMessage('procedure:' + IntToStr(num) + snum);
end;

procedure TForm1.MyFunction(out num: Integer; out snum: string);
begin
num := num * 2;
snum := snum + 'CBA';
end;

为什么弹出的snum的值是‘CBA’ 却不是‘ABCCBA’呢?怎么才能把string的值传进去啊?
我知道var可以,var是在传递参数的地址。但我是想知道out为什么不行呢。Out不就是以返回值的形式进行参数返回吗?而且明明Integer类型的可以,可到了string为什么就不行了呢?
展开
 我来答
zyjying520
2010-11-13 · TA获得超过225个赞
知道小有建树答主
回答量:436
采纳率:100%
帮助的人:372万
展开全部
你将 MyFunction(out num: Integer; out snum: string); 改为
MyFunction(out num: Integer; var snum: string);就可以了,

你看看out 和 var的区别哦,使用out貌似只能传递参数不能引用自身

你如果加个变量最后将结果使用snum传递就可以了
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式