首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > .NET >

Delphi 的指针有关问题

2012-03-25 
Delphi 的指针问题如一过程:procedure TForm1.ChangeMes(MM: TMemo Tem: string)varMMM:TMemoTemm:stri

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可以改变。
[解决办法]

Delphi(Pascal) code
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;

热点排行