我定义了一个过程procedure aa(a:string;var a1,a2:sring)
调用为aa(edit1.text,edit2.text,edit3.text)
 编译时出错,说类型不相同。
假设在过程是这样的
procedure aa(a:string;var a1,a2:sring)
..
..
a1:=substring(a,1,1);
a2:=substring(a,2,1);
end;
实际上是将a1的值给edit2.text,a2的值给edit3.text
如果在调用时定义两个string,在将这两个string赋给edit2.text和edit3.text就可以。
这是为何??

解决方案 »

  1.   

    var a1,a2:sring //传址变参
    edit2.text,edit3.text // 常数
      

  2.   

    你后说的是对的,因为你将a1,a2定义成了变参,也就是要返回值的,Pascal语法规定了你必须传两个相应类型的变量给他们。
      

  3.   

    procedure names(s : String ;Var ss,st : String ) ;
    begin
      ShowMessage(s + '  ' + ss + '  ' + st) ;
    end;  names('12','23','34') ;//[Error] Unit13.pas(76): Constant object cannot be passed as var parameter
      

  4.   

    如果我是定义为aa(s:string;s1:string;s2:string)时
    我调用过程aa(edit1.text,edit2.text,edit3.text)
    edit2和3的值没有变化,如果我想这样调用,应该如何??
      

  5.   

    procedure names(Const s,ss,st : String ) ;
    begin
      ShowMessage(s + '  ' + ss + '  ' + st) ;
    end;
    procedure TForm1.Button3Click(Sender: TObject);
    begin
      names(Edit1.Text,Edit2.Text,Edit3.Text) ;
    end;
      

  6.   

    上面的,
    我按着你的方法去定义:
    procedure aa(a:string;const a1,a2:sring)
    然后调用aa(Edit1.Text,Edit2.Text,Edit3.Text);
    编译出错如下:
    [Error] Unit1.pas(46): Left side cannot be assigned to实际上我的意思是要把计算出的s2值给edit2.text,s3值给edit3.text;
    不用函数调用就是写成
    edit2.text:=substring(edit1.text,1,1)
    {{{{只是举例}}}}}
    如果我要在函数中直接将计算值赋给edit2.text而显示出来,而不是通过一个定义的string再赋给edit2.text而显示出来.有没有办法?
      

  7.   

    procedure aa(a:string;var a1,a2:sring)
    begin
    end;比如我在button.click(sender tobject)
    var a1,a2,a3:string;  
    begin
    a1:=edit1.text;
    a2:=edit2.text;
    a3:=edit3.text;
    aa(a1,a2,a3);
    end;
    这样才对的!如果你想传递的是tedit(这个对象的话)
    这样定义procdure aa (var a1,a2,a3:tedit);
    beginend;
    button1.click
    begin
    edit1.text:='dfd';
    edit2.text:='dfd';
    edit3.text:='dfdfdf';
    end;
    那么a1.text为dfd
    a2.text为dfd
    a3.text为dfdfdf
      

  8.   

    在button1.click中加
    aa(edit1,edit2,edit3)
      

  9.   

    Const 定义的的形参不能被改变直接在过程中对 Edit1...赋值也可以