You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将Procedure of object类型过程赋值给reference to类型过程?

问题解答

根因分析

出现类型不兼容报错的核心原因有两个:

  • TMyProc 是匿名方法类型(reference to procedure),而直接取类实例成员方法得到的是方法指针类型(procedure of object),二者在Delphi中属于完全不同的类型体系,无法直接赋值
  • TAnObject.MyProcImpl 存在重载定义,编译器无法自动推导你需要绑定的是接收String参数的那个重载版本

解决方法

通过匿名方法包裹你需要的String参数版本MyProcImpl即可完成适配,代码示例如下:

MyObject.MyProc := procedure(const adata: String)
                   begin
                     // 显式调用接收String参数的重载,自动完成类型适配
                     AnObject.MyProcImpl(adata);
                   end;

注意:请勿直接对procedure of object类型做强制类型转换后赋值给匿名方法类型,会导致调用时出现不可预期的内存访问异常,必须通过匿名方法包装的方式做类型适配。


内容的提问来源于stack exchange,提问作者zeus

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 04:57:05