【问题标题】:Check at compile time if a unit exists在编译时检查一个单元是否存在
【发布时间】:2017-10-22 01:48:23
【问题描述】:

如果存在,我想使用一个单位。是否有类似 {$IF Declared(MyUnit)} 的单位或其他方式?

我安装了一个组件包的演示版本,并希望有条件地使用其中的单元,并有条件地添加菜单项以测试其功能。无需强制所有人安装演示包。

【问题讨论】:

  • 我只是好奇,你为什么会这样?
  • 我安装了一个组件包的演示版本,并希望有条件地使用其中的单元,并有条件地添加菜单项以测试其功能。无需强制所有人安装演示包。
  • 你不能这样做。让编译器进行搜索的唯一方法是在 uses 子句中命名单元。你需要引入你自己的条件。
  • 我猜你可以检查{$if declared(SomeIdentifierInThatUnit)}
  • @RudyVelthuis,这仍然需要在条件之前的某个地方有一个uses ThatUnit。否则它总是会失败。

标签: delphi conditional-compilation delphi-units


【解决方案1】:

这是不可能的。您需要有一个条件语句来执行单元搜索。查看项目文件中列出的单位,然后是搜索路径。但是,没有这样的条件。

您可以做的最好的事情是仅在定义了条件符号时才使用这些单位。然后,您需要在项目中定义该符号。

这显然不方便,但只有在评估组件时才有必要。评估完成后,您将普遍采用它,或者根本不采用。与此同时,你将不得不忍受一定程度的尴尬。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-03-16
    • 2013-11-13
    • 1970-01-01
    • 2020-05-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多