【问题标题】:Delphi {$INCLUDE filename} in uses part of dpr fileDelphi {$INCLUDE filename} 使用 dpr 文件的一部分
【发布时间】:2018-05-24 17:17:31
【问题描述】:

我有许多使用相同单元的 Delphi 10 项目,我们称它们为“commons”。

当我将一个新单元添加到公共空间时,我必须手动将它添加到每个项目中。我尝试在每个.dpr 文件的uses 部分中添加{$INCLUDE commons.inc} 行:

uses
    Forms,
    {$INCLUDE commons.inc}
    projectUnit1,
    ...;

commons.inc 有这个内容:

common1,
common2,

我可以编译一个项目,但不能管理来自commons.inc 的单元。通过管理,我的意思是 Ctrl-F12,从项目中删除,等等。

这是来自 Delphi 的帮助:

使用包含文件有一个限制:不能在语句部分的中间指定包含文件。实际上,语句部分的开头和结尾之间的所有语句都必须存在于同一个源文件中。

我想这就是为什么我的想法行不通的原因?

是我做错了什么,还是有其他解决方案?

【问题讨论】:

  • 确定可以编译没有错误? IMO 至少包含应为common1, common2,; 将终止使用语句。
  • IDE 基本上“拥有”大部分 DPR 文件。但附带说明一下,您是否应该在这个 inc 文件中使用 , 而不是 ;
  • 我没有亲自尝试过,但尝试创建一个预构建事件脚本来在 dpr 文件中进行搜索/替换。预构建事件接受 DOS 命令。我的猜测是调用一个 bat 文件,该文件调用一个 powershell 命令在 dpr 文件中搜索/替换。 docwiki.embarcadero.com/RADStudio/Tokyo/en/…stackoverflow.com/questions/60034/…
  • 是的,这是意料之中的。 IDE 不会读入您的包含文件。这就是你付出的代价。
  • 您可以使用 Project->Add to Project 和 multi-selecting 将这两个文件添加到您的 .dpr 中,就像您在 $INCLUDE 语句中键入一样快,然后您可以通过IDE就像你抱怨不能做一样。这听起来像是一个 XY 问题 - 我正试图想出一种方法来解决问题 Y,这是我首先因为没有正确使用 X 而导致自己的问题 Y - 对我来说。

标签: delphi


【解决方案1】:

这种解决方法可能适合。到目前为止我发现的唯一缺点是包含的文件没有出现在项目管理器中。

  • 将包含要包含的文件的文件夹添加到每个项目的搜索路径中。
  • 创建 Include.pas,一个普通的 .pas 文件,并在每个项目中以普通方式包含它。
  • 将要包含在多个项目中的文件添加到 Include.pas 的 uses 子句中。如果需要,可以使用 $IFDEFS。

【讨论】:

  • 一开始没有得到它,但是是的,这可能有效。可以从“下面描述的解决方法可能适合:” 开始,这使答案更具可读性。我最初以为您指的是早期的 cmets 之一。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2010-09-23
  • 2010-09-06
  • 2015-02-01
  • 1970-01-01
  • 2010-09-23
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多