20

如何在项目选项中设置“目录/条件”和在环境选项中设置“库”路径?Delphi帮助对这些非常重要的设置不多说。由于我的 VCL 之间的错误依赖关系,我遇到了各种奇怪的错误。

1.

我在一个名为ThirdPartyPackages_D7.dpk 的包中合并了大量的第3 方控件。这在我重新安装 Delphi 时很有用,因为我不必每年重新安装所有这些第 3 方 VCL。

然后,我在 MyControls_D7.dpk 中有自己的控件,它依赖于 ThirdPartyPackages VCL。我还有另一个依赖于 MyControls 的包 BlgPackage.dpk。

在链的末端是我的应用程序(DPR 项目),它使用 BlgPackage 中的控件。

ThirdPartyPackages.dpk -> MyControls.dpk -> BlgPackage.dpk -> MyApplication.dpr

当我更改/编辑第二个包 (MyControls.dpk) 并构建 DPR 应用程序时,它可以工作。编译器会看到对该包所做的更改。但是,如果我关闭项目并加载并编译 BlgPackage,它会抛出一条讨厌的消息,指出函数 xyz 在 MyControls 中找不到,因为我删除了它(我已将 MyControls 的单元与应用程序的单元并行加载到 IDE 中)。似乎构建应用程序只会刷新所有使用过的软件包的 DCU 文件,而不是 DCP/BLP 文件。

如何在不将包显式加载到 IDE 并构建它们的情况下编写和编译包中的代码?(注意:我有一个讨厌的错误,它不允许我在不重新启动 IDE 或同时加载一组项目/包 (*.bpg) 的情况下在项目之间切换。)

2.

另一个问题是我想将一个包的编译文件(DCP/BPL/DCU)存储在它的文件夹中(例如 c:\MyProjects\Blg)。
如果我将 BlgPackage 包的“输出目录”、“单元输出目录”和“DCP 输出目录”框设置为它的文件夹,那么不仅它的 BPL/DCU/DCP 文件将存储在那里,而且 MyControls 的 BPL/DCP 文件也将存储在那里将存储在那里。如何将每个包的二进制文件放在单独的文件夹中?


Delphi 7,Win XP,所有项目设置为“根据需要重建”

4

3 回答 3

3
  1. 你应该明确编译包——仅仅编译包文件是不够的,你已经注意到会导致问题。在现代 Delphi 版本中,您可以创建一个项目组(不确定 Delphi 7),其中包含一个应用程序和您要使用该应用程序开发的包,您可以轻松地在它们之间切换并编译包,而无需关闭/重新打开应用程序。

  2. BlgPackage 不应访问 MyControls 包源(通过“库”路径或使用同一目录),它应该只访问已编译的 MyControls 包,否则每次构建 BlgPackage 时都会编译来自 MyControls 的文件,并且编译的文件是存储在 BlgControls DCU 目录中


添加

“库”路径应该只指向已编译的文件(.dcp、.dcu)和(如果需要)资源文件(.res、.dfm)——它足以编译需要“MyControls”包的应用程序和包。您可以直接在包设置中设置编译文件的目录,您应该手动将资源文件(如果需要)复制到同一目录。该目录应包含在“库”路径中,否则您可以使用“库”路径中已包含的目录。

如果您不希望每次构建 BlgPackage 或需要“MyControls”包的应用程序时都编译这些文件,则“库”路径不应指向源文件 (.pas)。

于 2010-09-07T15:09:09.157 回答
3

我对第 3 方组件和重新安装 Delphi 使用了更简单的方法。

  • 打开 regedit 并找到 [HKEY_LOCAL_MACHINE/SOFTWARE/Borland/Delphi/xxx] 其中 xxx 是版本并导出整个分支。
  • 打开文件并删除密钥 LMKEY、LMLIC。
  • 将 C:\Program Files\Borland\Delphi x\Projects\Bpl 文件夹复制到另一个位置
  • 将 C:\Program Files\Borland\Delphi x\Imports 复制到另一个位置
  • 重新安装 Delphi,包括任何更新和 GExpert
  • 导入以前保存的注册表
  • 恢复 Bpl 和导入文件夹

哇啦,Delphi 又回来了,提供所有第 3 方组件和 IDE 设置。唯一的限制是在重新安装 Delphi 之前和之后,所有组件必须位于同一个文件夹中。

这也会恢复 TeamSource 设置。如果您还要重新安装 Windows,请确保使 windows 用户具有与以前相同的用户名。

于 2010-09-09T07:55:19.667 回答
1

我的解决方案(有点脏,但它有效):

我将所有 3rd 方 library.controls 放在一个包(超级包)中。我将所有控件放在一个包中。

现在,当我将包迁移到另一台 PC 时,我所要做的就是复制/粘贴两个文件夹并设置两个路径。

对我有用——其他人可能不同意,我不能责怪他们。我责怪 Borland/Embarcadero 的“地狱设计师”。如果您查看 StackOverflow,您会发现直到现在没有人为此提供优雅的解决方案。

于 2013-02-04T16:45:50.993 回答