自定义 procedure 的一些问题

秀才 2008-02-14 09:27:29
我在定义区定义了
procedure AlarmRecord(var AlarmGroup:Integer);
包括也写了该过程的程序
在调用这个过程的时候是不是不能用常量写参数?
就象这样
AlarmRecord(1);这样说类型不匹配
如果写成
i:=1;
AlarmRecord(i);这样就通过了!
这个是什么原因呢?
难道就不能用常量作为参数嘛?
...全文
77 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
fangsp 2008-02-14
  • 打赏
  • 举报
回复
进行参数传递时 参数类型要匹配
秀才 2008-02-14
  • 打赏
  • 举报
回复
基本上明白了!原因就象chris_mao 所说的!刚才我已经试过了!的确自己的概念有的糊涂!谢谢各位了!
hongqi162 2008-02-14
  • 打赏
  • 举报
回复
你得弄明白var写在过程里是什么意思,再去用
禹爸爸 2008-02-14
  • 打赏
  • 举报
回复
因为你使用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;
Corn1 2008-02-14
  • 打赏
  • 举报
回复
procedure AlarmRecord(var AlarmGroup:Integer);
你传进去的是变量参数呀,当然不能用常量。把前面的var去掉就可以了。
秀才 2008-02-14
  • 打赏
  • 举报
回复
如果参数比较多,而且有时候是变量有时候是常量怎么弄?
budded 2008-02-14
  • 打赏
  • 举报
回复
procedure AlarmRecord(const AlarmGroup:Integer); 就可以了

16,743

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 语言基础/算法/系统设计
社区管理员
  • 语言基础/算法/系统设计社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧