• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

delphi中var关键字

原作者: [db:作者] 来自: [db:来源] 收藏 邀请
首先简短说明在delphi中var的作用。

  var关键字在delphi 中是再普通不过的一个关键字, 大家都知道它的作用就是说明其后定义的是变量,局部变量不能在定义是赋初值, 全局变量可以设初值。
  
  技术手册中如是 描述:  全局变量会被初始化, 如integer型会被初始化为0 , 字符串为空,对象为nil。 但是局部变量不会被初始化。

  而我在这里说的不是这些。 因为我碰到了一个问题。 是这样的,在一个类中有一个属性,
象这样:

    Ta = class
   private
      fp1 : integer;
    public
      property  p1: integer read Fp1 write Fp2;
   end;

如果如此有个方法,procedure  SetSomeOne(var tmp :  integer);

这样使用这个方法;
var 
    a: Ta;
begin
    a := Ta. create;
   假设 ta在create时 fp1已经赋值了。
那么调用:
    SetSomeOne(a.p1);
则提示错误。
 Constant object cannot be passed as var parameter
我的英语很差, 应该翻译如下:常量对象不能作为变参传递

如果去掉 SetSomeOne参数中的var 则编译通过。




经过我的研究和测试最终找到了答案, 在方法参数中var很重要,一个方法如果没有返回值即procedure,那么它传递参数的可能只有方法参数, 那么必须设置要传递的参数为var。 否则永远得不到想要的结果。

对象的属性(property)不能作为变参(var)。 必须定义一个中间变量来传递给property,否则提示错误。

鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
VC 编译 MATLAB 的 mex 文件发布时间:2022-07-18
下一篇:
BUAA_2019_MATLAB基础与应用_期末复习纲要发布时间:2022-07-18
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap