导航
  • 主页
  • 语言基础/算法/系统设计
  • 数据库相关
  • 图形处理/多媒体
  • 网络通信/分布式开发
  • VCL组件开发及应用
  • Windows SDK/API
  • 问答

想问一下对象方法类型和过程类型有什么区别

xzgyb 2001-07-30 05:14:58
以前看书只是很模糊的概念

TNotifyEvent = procedure(Sender: TObject) of object;
写成
TNotifyEvent = procedure(Sender: TObject);不行吗
有什么区别吗
...全文
54 点赞 收藏 7
写回复
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
xzgyb 2001-07-31
给分
回复
光明山人 2001-07-31
对象方法类型只能以对象方法来赋,过程类型只能以过程来赋。

如有一个过程:(在类外面定义)
procedure IamaProc(Sender: TObject);

如果你把它赋给Form的OnCreate,就不行。
这些是语法上的区别。另外,对象方法类型变量占用了8个字节,而过程类型变量跟一般的指针变量一样,占用4个字节。对象方法变量包含了数据和代码两部分。
回复
WilliamGui 2001-07-30

我開始也不理解﹐現在我是這樣理解的﹐

加上 of object 表示﹐過程指針是指向一個對象類型內部的過程﹐而不是單純的﹑獨立的過程,
是object的一種語法﹐緊此而以!

回复
xzgyb 2001-07-30
推一推
回复
xzgyb 2001-07-30
谢谢上面两位,没别的,只想了解了解,对了,一般类里的方法编译出来,默认是加一self参数
是不是方法指针和全局过程指针和这有关呢
回复
mc_music 2001-07-30
有区别,前者是方法指针,后者是全局过程指针.
具体也没必要弄那么清楚.反正方法指针才能用于事件处理器,普通过程指针不能就行了,
其他使用上没有什么区别.而vc里就没有方法指针这个概念,也就不能象delphi那样
运行时轻松改变消息类处理函数了,这正是delphi的优越性之一.
回复
scripting 2001-07-30
Tmathod是record
回复
发动态
发帖子
Delphi
创建于2007-08-02

4807

社区成员

Delphi 开发及应用
申请成为版主
社区公告
暂无公告