比如如下单击过程调用putbuf2(datachr: pchar; var msg: bytearry)时可以显示'退出'字样,但若调用不带var的过程putbuf2将不显示'退出'字样显示的而是乱码!procedure TForm1.Button2Click(Sender: TObject);
var
    stringbuf,strbuf,strbf,stbf:string;
    btyarr:bytearry;
begin
    stringbuf:='退出';
     setlength(strbf,10);            
     putbuf2(@stringbuf[1],btyarr    
     move(btyarr[1],strbf[1],10);
     showmessage(strbf);
end;
procedure TForm1.putbuf2(datachr: pchar; var msg: bytearry);//var是什么意思?
begin
  move(datachr^,msg[1],10);
end;

解决方案 »

  1.   

    参数前带var表示这个参数是实参,在方法里对此值进行修改会相应改动给其传值的变量,比如:
    procedure a(i:integer;var j:integer);
    begin
      i:=i*2;
      j:=j*2;
    end;var m,n:integer;
    begin
      m:=3;
      n:=3;
      a(m,n);
      //此时m=3,n=6
    end;
      

  2.   

    加 var后面的参数可以在这个过程或函数中修改其值并自动传回
      

  3.   

    参数前带var表示这个参数是实参,在方法里对此值进行修改会相应改动给其传值的变量,
    这是正解
      

  4.   

    delphi函数参数一般有3种:
    1 const  :传递参数地址,不改变参数内容,如果函数不改变参数内容,建议使用此修饰符
    2 var    :传递参数地址,可改变参数内容,需要改变参数内容时使用,如果需要返回多个值的时候不能用函数,也可以用这种方式。
    3 没有修饰符:传递参数内容(不包括类和动态数组,它们也是传递变量地址的),用这种变量的时候,会复制原变量的值到函数中进行运算,函数运行结束后将自动释放其内存,不影响原变量的内容。