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

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

TNotifyEvent = procedure(Sender: TObject) of object;
写成
TNotifyEvent = procedure(Sender: TObject);不行吗
有什么区别吗
...全文
139 7 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
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

5,927

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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