首页 > 解决方案 > 如何检查单元和功能是否存在?

问题描述

我正在使用 Delphi 11。有没有办法在 TDataModule 中运行特定函数,但前提是这个数据模块存在于我的项目中?

我需要一种方法来检查数据模块是否存在并将函数作为字符串调用,因为有些项目会添加这个数据模块,而其他项目则不会。

而不是这个:

myDataModule.myfunction(param);

会是这样的虚构代码:

if TDataModule(findcomponent('myDataModule')) <> nil then
   TDataModule(findcomponent('myDataModule')).call('myfunction','param');

标签: delphidelphi-11-alexandria

解决方案


一个轻量级的解决方案可能是消息(来自System.Messaging的那些)。

  1. 声明一个新的TMessage后代,保存调用所需的参数
  2. 创建数据模块时,它使用执行操作的处理程序订阅此消息类型。
  3. 无需搜索数据模块,只需发送消息。

推荐阅读