DELPHI盒子
!实时搜索: 盒子论坛 | 注册用户 | 修改信息 | 退出
检举帖 | 全文检索 | 关闭广告 | 捐赠
技术论坛
 用户名
 密  码
自动登陆(30天有效)
忘了密码
≡技术区≡
DELPHI技术
lazarus/fpc/Free Pascal
移动应用开发
Web应用开发
数据库专区
报表专区
网络通讯
开源项目
论坛精华贴
≡发布区≡
发布代码
发布控件
文档资料
经典工具
≡事务区≡
网站意见
盒子之家
招聘应聘
信息交换
论坛信息
最新加入: ahttp123
今日帖子: 22
在线用户: 17
导航: 论坛 -> DELPHI技术 斑竹:liumazi,sephil  
作者:
男 abcjingtong (jingtong) ★☆☆☆☆ -
普通会员
2016/8/8 1:54:44
标题:
这种编译不过的情况,有办法解决吗? 浏览:1504
加入我的收藏
楼主: procedure TForm5.btn1Click(Sender: TObject);

  procedure OnButtonClick(Sender: TObject);
  begin
    ShowMessage('sss');
  end;

var
  vBtn: TButton;
begin
  vBtn := TButton.Create(Self);
  vBtn.OnClick := OnButtonClick;  // 出错行
  // ....
end;

以上代码编译时出错,提示[DCC Error] Unit5.pas(37): E2009 Incompatible types: 'method pointer and regular procedure'
除了将OnOnButtonClick定义到类里之外,还有别的解决办法吗?
----------------------------------------------
18114532@qq.com
作者:
男 nevergrief (孤独骑士) ★☆☆☆☆ -
盒子活跃会员
2016/8/8 2:36:31
1楼: 你把 OnButtonClick 定义成类函数就行了。原因是单独的函数只有4个字节,而OnClick有8个字节长
----------------------------------------------
只有偏执狂才能生存!
作者:
男 2010632 (嘎嘎) ★☆☆☆☆ -
普通会员
2016/8/8 9:15:53
2楼: procedure TForm4.FormCreate(Sender: TObject);

  procedure ____(Sender: TObject);
  begin
    ShowMessage(Sender.ClassName);
  end;

var
  M: TMethod;
begin
  M.Data := BitBtn1;
  M.Code := @____;
  TypInfo.SetMethodProp(BitBtn1, 'OnClick', M);
end;
----------------------------------------------
!!!!!!!
作者:
男 abcjingtong (jingtong) ★☆☆☆☆ -
普通会员
2016/8/8 17:18:17
3楼: 2位热心朋友的指点,都是正确的,非常感谢2位高手,不过骑士给出的原因“单独的函数只有4个字节,而OnClick有8个字节长”我很想知道这么高深的东西,您是怎么学到的?
----------------------------------------------
18114532@qq.com
作者:
男 nevergrief (孤独骑士) ★☆☆☆☆ -
盒子活跃会员
2016/8/8 20:07:27
4楼: 我是被人当作狗屎踩,但是被踩多了也就都明白了。
----------------------------------------------
只有偏执狂才能生存!
作者:
男 wr960204 (武稀松) ★☆☆☆☆ -
盒子活跃会员
2016/8/8 21:54:12
5楼: 独立的函数是指针,类的成员函数是TMethod结构体
----------------------------------------------
武稀松http://www.raysoftware.cn
作者:
男 abcjingtong (jingtong) ★☆☆☆☆ -
普通会员
2016/8/9 11:56:19
6楼: 但我最终使用了嘎嘎的方法了,因为一些设计原因,不能定义到类中间
----------------------------------------------
18114532@qq.com
信息
登陆以后才能回复
Copyright © 2CCC.Com 盒子论坛 v3.0.1 版权所有 页面执行62.5毫秒 RSS