【问题标题】:How to remove duplicate resources (RES, DFM) while using Delphi with non specific Library paths?如何在使用具有非特定库路径的 Delphi 时删除重复资源(RES、DFM)?
【发布时间】:2010-09-16 08:39:52
【问题描述】:

我遵循了之前讨论中收到的建议 (Should "Library path" point to the source files of packages?),现在我的库路径指向包含已编译代码 (DCU) 的文件夹,而不是指向我的控件的源代码。 问题是我必须复制 RES 和 DFM 文件并将它们从“源代码”文件夹复制到“编译”文件夹。这根本不是一个优雅的解决方案,因为每次我对控件进行更改(而且我经常这样做)时,我都必须记住将新的资源文件复制到已编译的文件夹中。

必须有一种优雅的方式来解开路径之谜!我想要的只是按下编译按钮并编译我的程序。它似乎没有那么复杂。对?好吧,实际上它适用于我以前的设置(将 Delphi 指向所有控件的源代码)。我只是把它改成了“好人”的做法。

附录
我仍然认为这是错误的方法,因为 Delphi 的(稀缺)文档说库路径应该指向“包的源文件”。


使用:
Delphi 7,Win 7 (32),简单的 Delphi 设置(没有安装版本控制系统的单一开发人员)。

【问题讨论】:

  • 版本控制系统对单个开发人员也非常有用。我建议您使用一个,因为 1)它可以让您更轻松地使用不同版本的代码 2)它可以保护您免受自己的错误 3)您将学习如何使用一个

标签: delphi delphi-7


【解决方案1】:

你有两个解决方案:

  1. 每次构建后,使用构建工具构建和复制所有应正确部署的文件(我的首选解决方案)
  2. 将 .pas/.dfm/.res 目录放在 .dcu 目录之后。它会首先找到 .dcu,除非您构建,否则不会重新编译,并且会继续寻找 .res/.dfm 等。

【讨论】:

  • IIRC 在 Delphi 7 中,您仍然可以添加 bat/cmd 文件作为项目的一部分并在“构建”时执行,您可以使用它们来复制文件。解决方案 2 的缺点是您可以使用旧版本的 .dfm 来使用 dcu - 请小心
【解决方案2】:

如果您查看 D2007 项目文件 (*.dproj),您会发现搜索路径针对每个配置出现多次。有

  • <DCC_UnitSearchPath>,
  • <DCC_ResourcePath>,
  • <DCC_ObjPath>
  • <DCC_IncludePath>

也许您可以将 <DCC_ResourcePath> 指向包含资源文件的源目录,而将其他变量指向 DCU 目录。

注意:我没有尝试过,无法检查其他 Delphi 版本的情况是否有所不同。

【讨论】:

  • 嗨,乌尔里希。我在 Delphi 7 中找不到
  • 嗯,我找到了一些旧的 D5 项目 - 这应该与 D7 相同。看起来 *.dof 只包含一个路径(SearchPath),而 *.cfg 有多个路径(-U、-O、-I、-R)。 IIRC *.dof 选项控制 IDE 内的编译器,所以我想这种方法对你来说很难使用。
【解决方案3】:

尽管其他人在这里提供的答案绝对是好的和正确的(每个人都获得了赞成票),但在尝试了一下之后,我决定保留我之前的 (KISS) 设置。它工作了多年,而且还会继续工作。我知道,它以速度(重新编译源代码)来换取稳定性,但它使“路径、库、源代码、浏览和输出文件夹”变得疯狂。我只是不必再担心设置路径(除了第一次安装 Delphi 时,但这可以自动化)或退出当前的 DPR Delphi 项目并加载 DPK 库并在每次添加更改时对其进行编译。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-12
    • 1970-01-01
    • 2021-12-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多