我在定义区定义了
procedure AlarmRecord(var AlarmGroup:Integer);
包括也写了该过程的程序
在调用这个过程的时候是不是不能用常量写参数?
就象这样
AlarmRecord(1);这样说类型不匹配
如果写成
i:=1;
AlarmRecord(i);这样就通过了!
这个是什么原因呢?
难道就不能用常量作为参数嘛?

解决方案 »

  1.   

    procedure   AlarmRecord(const AlarmGroup:Integer); 就可以了
      

  2.   

    procedure   AlarmRecord(var   AlarmGroup:Integer); 
    你传进去的是变量参数呀,当然不能用常量。把前面的var去掉就可以了。
      

  3.   

    因为你使用var定义的参数,这表示这个参数在此过程中有可能会被修改,并且这种修改会影响到实参的值,所以你不能使用一个常量做为参数,因为常量是不可以被修改的。如果你想在过程中修改实际的参数值,可以使用Var进行定义参数;如果不想修改实参值,则可以使用Const定义参数;如果你只是想在过程中修改参数,但不是修改实际参数值,则可以不使用任何关键字定义参数。var
      i: Integer = 10;procedure P1(var P: Integer);
    begin
      P := 20;  //全局变量i的值也变为20
      ......
    end;procedure P1(const P: Integer);
    begin
      P := 20; //此句会出错,Const定义的参数不允许被修改
      ......
    end;procedure P1(var P: Integer);
    begin
      P := 20;  //全局变量i的值还是10,
      ........
    end;
      

  4.   

    你得弄明白var写在过程里是什么意思,再去用
      

  5.   

    基本上明白了!原因就象chris_mao 所说的!刚才我已经试过了!的确自己的概念有的糊涂!谢谢各位了!