【问题标题】:Prevent project tree from showing delphi rtl units防止项目树显示 delphi rtl 单元
【发布时间】:2021-11-11 09:10:11
【问题描述】:

我使用的是 Delphi XE3,我有很多项目在 DPK 文件中包含一个 rtl 单元(需要设置{$SetPEFlags IMAGE_FILE_NET_RUN_FROM_SWAP}),所以他们的 DPK 看起来像这样:

requires
  { ... };

contains
  { ... },
  Winapi.Windows;

{$SetPEFlags IMAGE_FILE_NET_RUN_FROM_SWAP}

end.

最近我通过从 Windows 资源管理器中选择 DPK 并使用 拖放 将它们添加到项目组中来添加项目,现在是一些项目的项目树(不是全部)看起来像这样:

如何防止Winapi.Windows.pas 在项目树中显示?

【问题讨论】:

  • 最简单的方法是停止导入 Windows 单元,然后在您的 dpk 文件中执行 const IMAGE_FILE_NET_RUN_FROM_SWAP = $0800
  • @DavidHeffernan 这是唯一的方法吗?我也想了解为什么有时它会添加 Windows 单元。这是某种 Delphi 错误还是我可以设置的选项?
  • 另一种方法是将$SetPEFlags 放在一个编译到你的包中的单元中,但你必须确保它在你的包中,而不是在不同的包中动态引用.我绝对会按照我在评论中所说的方式去做。
  • @MarinaFinetti 为什么Winapi.Windows 单元在您的contains 列表中以开头?它根本不属于那里(除非您实际上是对Winapi.Windows.pas 进行修改),它应该在uses 子句中。或者,就像 David 建议的那样,将自己的 IMAGE_FILE_NET_RUN_FROM_SWAP 标志硬编码为本地常量。
  • 你是对的,甚至不能在 dpk 文件中声明 const。这样你就可以得到{$SetPEFlags $0800} 和评论!或者您可以使用构建后操作调用 editbin 来设置标志,但我不认为这更好。

标签: delphi delphi-xe3 delphi-ide


【解决方案1】:

Delphi 在您的项目中显示Winapi.Windows.pas 在项目树中如此之深的原因是该文件的位置不在您的项目文件夹或其任何子文件夹中,因此需要添加了绝对路径信息。

但是可以使用相对路径信息添加驻留在项目文件夹或其任何子文件夹中的单元。在这种情况下,可能不会有那么深的树结构,除非您的项目目录中也有很深的文件夹结构。

【讨论】:

  • 谢谢,但为什么这种情况只发生在某些项目上,而且只有在使用拖放时才会发生?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2010-10-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-27
  • 2013-06-19
相关资源
最近更新 更多