在dpr文件的uses部分中,使用Delphi {$INCLUDE 文件名}。

5

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

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

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

commons.inc包含以下内容:

common1,
common2,

我可以编译项目,但无法管理 commons.inc 中的单元。所谓管理,是指使用 Ctrl-F12,从项目中删除等操作。
这是 Delphi 帮助文档中的内容:

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

我想这就是为什么我的想法行不通的原因?
我是否做错了什么,或者还有其他解决方案?

1
你确定可以编译没有错误吗?在我看来,至少include应该写成common1, common2,。分号将终止uses语句。 - gammatester
1
IDE基本上“拥有”DPR文件的大部分内容。但是顺便提一下,在这个inc文件中,你应该使用,而不是;吗? - Jerry Dodge
1
我个人没有尝试过这样做,但可以创建一个预构建事件脚本,在dpr文件内进行搜索/替换。预构建事件接受DOS命令。我的猜测是调用一个批处理文件,该批处理文件调用一个PowerShell命令来在dpr文件内进行搜索/替换。http://docwiki.embarcadero.com/RADStudio/Tokyo/en/Creating_Build_Events https://dev59.com/tXVD5IYBdhLWcg3wL4cA?utm_medium=organic&utm_source=google_rich_qa&utm_campaign=google_rich_qa - Sam M
5
好的,这是可以预料的。IDE不会读取您的包含文件。这只是您需要付出的代价。 - David Heffernan
1
您可以使用Project->Add to Project并多选文件的方式将这两个文件添加到您的.dpr中,就像您输入$INCLUDE语句一样快速,然后您可以通过IDE管理它们,就像您抱怨自己不能做的那样。对我来说,这听起来像一个XY问题——“我试图想出一个解决Y问题的方法,但首先是因为我没有正确地使用X而导致了问题Y。”。 - Ken White
显示剩余7条评论
1个回答

1
这个解决方法可能适用。到目前为止,我唯一发现的缺点是包含的文件不会出现在项目管理器中。
  • 将包含文件的文件夹添加到每个项目的搜索路径中。
  • 创建Include.pas,一个普通的 .pas 文件,并以普通方式在每个项目中进行包含。
  • 将要包含在多个项目中的文件添加到Include.pas的uses子句中。如果需要,可以使用$IFDEFS。

一开始没明白,但是是的,这可能有效。可以以“下面描述的解决方法可能适用:”开头,这样回答会更易读。我最初以为你在引用早期的评论之一。 - H.Hasenack

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接