Delphi 的指针问题
如一过程:
procedure TForm1.ChangeMes(MM: TMemo; Tem: string);
var
MMM:TMemo;
Temm:string;
begin
MMM:=MM;
Temm:=Tem;
MMM.Lines.Add('aaaaa');
Temm:='bbbbb';
end;
结果是:
1、MM控件会加上一行‘aaaaa’;
2、Tem则不会该变,还是和原来一样是空没边成‘bbbbb’。
我的问题是为什么调用该过程后MM会该改变,而Tem却没变化;
我想Tem应该是要传它的地址进去吧,恩应该怎样传地址;
急用麻烦赐教!
[解决办法]
对象本身就是指针所以用不用var效果是一样的
而tem则不然,用var可以改变。
[解决办法]
procedure TForm1.ChangeMes(MM: TMemo;var Tem: string); var MMM:TMemo; Temm:string; begin MMM:=MM; Temm:=Tem;//这是赋值,是字符串拷贝,不是指针。。。。。。与C++不同。 MMM.Lines.Add( 'aaaaa '); Temm:= 'bbbbb '; //这样是不会变的。 tem:='bbbb';//这样就会改变入参的值了! end;
[解决办法]
var
s:string;
procedure proc(var a:string);
var
p:^string;
begin
p:=@a;
p^:='hello world';
end;
begin
proc( s );
showmessage( s );
end;