【问题标题】:How to reorganize the folder structure of my units in Delphi?如何在 Delphi 中重新组织我的单元的文件夹结构?
【发布时间】:2012-09-19 00:26:53
【问题描述】:

我用 Delphi 开始了一个原型,所有源文件都在一个目录下
现在,我想用文件夹重新组织所有内容

我找到了两种方法。

1/首先是在Delphi IDE中打开每个单元和Save as新文件夹。然后删除旧的单元文件。

2/在windows explorer下,重新整理一下,然后在Delphi IDE中打开项目,去掉对旧(未知)单元的引用,然后逐个文件夹添加每个单元文件夹。

因为我有 100 多个单元,所以无论我使用哪种方法(1 或 2),都非常痛苦。
你是如何进行这样的重组的? 我错过了一个功能吗?

【问题讨论】:

  • 我猜,最快的方法是在 IDE 关闭时移动文件并手动编辑每个 .dpr。
  • 我同意@sertac - 这是最好在 IDE 之外完成的那种活动。一旦你重新组织了你的单元,进入一个命令窗口并从源目录的根目录输入 dir /s /b *.pas >units.txt。这将为您提供一个文件 units.txt,其中包含您的单元的新路径。使用它来编辑您的 DPR 文件。
  • @KeithMiller 不要忘记.dproj 文件也需要调整,这可能是一个非常痛苦的过程。 @uweRaabe 有一个更好的解决方案。
  • 是的,-Uwe 的解决方案是最简单和最好的方法。
  • @Jeroen - 看起来 msbuild 可能需要这些条目,否则它们可能是多余的,AFAICT ......无论如何,没有太多编辑涉及,只需删除“dccreference”条目,然后IDE 中的“全部保存”会重新生成它们。

标签: delphi refactoring directory delphi-xe directory-structure


【解决方案1】:

我没有检查 XE,但在 XE2 中,这在 IDE 中很容易做到:

  • 在多个项目的情况下,所有项目都在一个项目组中
  • 在项目经理中为每个单位做
    • 按 F2 或使用上下文菜单重命名单位
    • 重命名时将子文件夹放在单元名称的前面(例如 test\Unit1.pas)

IDE 将移动单元(移除旧单元)并将此更改推广到项目组中的所有项目。

【讨论】:

  • 这是正确的做法。 IDE 将为您完成所有工作。
  • 这适用于我在 DelphiXE 中。但我必须一次一个地完成……这真的很痛苦;)我希望能够使用“项目管理器”窗口将我的单元拖放到新文件夹中。
  • 我会批准这个答案,因为这对我有用,并且正在使用 IDE。其他开发人员可能想直接破解项目文件......我可以理解:)
  • 有人可能会检查这是否也会让版本控制集成满意。我不使用 Git,但在 Mercurial 中这不是问题。这样的东西可以是一个真正的带有颠覆性的 PITA。
  • 我在 Delphi IDE 之外使用 bazaar,这不是问题,因为 bzr find 很容易发现文件被移动(或重命名)。
【解决方案2】:

您真的需要在项目中命名所有 100 多个单元吗?其中一些不是可以放在搜索路径上的文件夹中的普通功能吗?从项目中删除所有不太常用的单元并将它们放在文件夹中以适合您的逻辑。 IDE会找到它们,你也可以在需要的时候在IDE中右键打开它们,而不用在项目中用固定路径命名。

【讨论】:

  • 我力求项目是独立的,这样可以更轻松地将开发转移到不同的机器/用户,并运行自动构建。
  • 我不想破解 *.dpr 和 *.dproj。我正在将持续集成与单元测试和测试覆盖率统计一起使用,此类工具会解析 *.dpr 文件以收集单元!
  • 只需将相对搜索路径添加到您的项目中。这样,无论您的项目走到哪里,路径都会走到哪里。
【解决方案3】:

最简单的方法是:

  1. 将项目文件复制到您希望它们所在的文件夹中;
  2. 编辑项目*.dpr 文件以删除所有in ..
  3. 编辑项目选项并将项目文件夹的路径添加到搜索路径选项(不是全局 IDE 默认项目选项,而是您项目的选项)。

【讨论】:

    【解决方案4】:

    只有第二个选项。使用 TotalCommander、Windows Explorer 等将文件移动到新目录。我认为您的源代码布局应如下所示:

    myutils
    libs
        crypto
        database
        network
    

    然后添加这些目录:

    myutils;libs\crypto;libs\database;libs\network
    

    致您的Unit Search Path

    【讨论】:

    • 查看我的 cmets 到 frogb,我不喜欢使用我拥有的单位的搜索路径。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-22
    • 1970-01-01
    • 1970-01-01
    • 2023-01-05
    相关资源
    最近更新 更多