delphi中var关键字
2020-02-17 06:40
399 查看
首先简短说明在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,否则提示错误。
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,否则提示错误。
转载于:https://www.cnblogs.com/duhai_lee/archive/2005/06/29/183216.html
- 点赞
- 收藏
- 分享
- 文章举报
相关文章推荐
- Delphi和C++ Builder中的Hibernate开发(一)
- Delphi和C++ Builder中的Hibernate开发(六)
- 关于C#下写的Web Service 服务在Delphi下调用时的问题
- 简单工厂之Delphi实现
- Delphi 对对碰外挂 记录
- delphi TWebBrowser 详细解释
- 禁止 Delphi2010 检测新版本
- delphi TDbGrid 右键 P 4000 opupMenu 菜单只在有数据的地方弹出
- (转载)delphi文件流
- (转载)delphi实例TDBGrid用右键菜单复制行粘贴行
- (转载)delphi 把图片存入数据库
- (转载)Delphi StringGrid常用属性和常用操作
- (转载)EhLib 在 Delphi 7 下的安装方法
- (转载)Delphi TStringList的用法
- Microsoft Agent技术在Delphi中的应用
- delphi 7.0生成的AgentObjects_TLB.pas出错导至Ms Agent不能发声
- Delphi XLgrid 动态创建下拉框列
- Delphi XE10.3.1 使用心得-2019-12-08
- Delphi10 Android程序 对话框(dialogmessage, showmessage)等的汉化
- TCP中间件_Delphi_client