如何在Delphi中重新组织我的单元的文件夹结构?

如何在Delphi中重新组织我的单元的文件夹结构?,delphi,refactoring,directory,delphi-xe,directory-structure,Delphi,Refactoring,Directory,Delphi Xe,Directory Structure,我用Delphi启动了一个原型,它将所有源文件放在一个目录下 现在,我想用文件夹重新组织所有内容 我找到了两种方法 1/首先是在Delphi IDE中打开每个单元,并将其另存为新文件夹。然后删除旧的单位文件 2/在windows资源管理器下,重新组织所有内容,然后在Delphi IDE中打开项目,删除对旧(未知)单元的引用,然后逐个文件夹添加每个单元文件夹 因为我有100多个单位,无论我用什么方法(1或2),这都是非常痛苦的。 您是如何进行这样的重组的? 我错过了一个功能吗?只有第二个选项。使用

我用Delphi启动了一个原型,它将所有源文件放在一个目录下
现在,我想用文件夹重新组织所有内容

我找到了两种方法

1/首先是在Delphi IDE中打开每个单元,并将其另存为新文件夹。然后删除旧的单位文件

2/在windows资源管理器下,重新组织所有内容,然后在Delphi IDE中打开项目,删除对旧(未知)单元的引用,然后逐个文件夹添加每个单元文件夹

因为我有100多个单位,无论我用什么方法(1或2),这都是非常痛苦的。
您是如何进行这样的重组的?
我错过了一个功能吗?

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

myutils
libs
    crypto
    database
    network
然后添加这些目录:

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

到您的
单元搜索路径

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

最简单的方法是:

  • 将项目文件复制到所需的文件夹中
  • 编辑项目*.dpr文件以删除..中的所有
    
    
  • 编辑项目选项并将路径添加到项目文件夹以搜索路径选项(不是全局IDE默认项目选项,而是项目的选项)

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

    • 如果有多个项目,则将所有项目都包含在一个项目组中
    • 在项目经理的指导下,为每个单位做些什么
      • 按F2键或使用关联菜单重命名装置
      • 重命名时,将子文件夹放在单元名称前面(例如test\Unit1.pas)

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

    我想,最快的方法是在关闭IDE时手动移动文件并编辑每个.dpr。我同意@sertac-这是最好在IDE之外完成的活动。重新组织单位后,将其放入命令窗口,并从源目录的根目录中输入dir/s/b*.pas>units.txt。这将为您提供一个文件units.txt,其中包含单元的新路径。使用此选项编辑您的DPR文件。@KeithMiller不要忘记,
    .dproj
    文件也需要调整,这可能会很麻烦@Uwerabe有一个更好的解决方案。是的,-Uwe的解决方案是最简单和最好的方法。@Jeroen-看起来msbuild可能需要这些条目,否则它们可能是多余的,而且。。。在任何情况下,都不需要太多的编辑,只需删除“dccreference”条目,然后IDE中的“全部保存”就会重新生成它们。这是正确的方法。IDE将为您完成所有工作。这在DelphiXE中对我很有用。但我必须一次做一个单位。。。这真是一种痛苦;)我希望能够使用“项目经理”窗口将我的单位拖放到新文件夹中。我会批准这个答案,因为这对我来说是可行的,这是使用IDE。其他开发人员可能希望直接破解项目文件。。。我可以理解:)有人可能会检查这是否也会让版本控制集成保持愉快。我不使用Git,但在Mercurial中这不是问题。这些东西可能是subversion的真正PITA。我在Delphi IDE之外使用bazaar,bzr很容易发现文件被移动(或重命名)了,这不是一个问题。我努力使项目成为自包含的,这使开发更容易转移到不同的机器/用户,并运行自动构建。我宁愿不要破解*.dpr和*.dproj。我正在使用与单元测试和测试覆盖率统计数据的持续集成,这类工具解析*.dpr文件以收集单元!只需将相对搜索路径添加到项目中。这样,无论你的项目走到哪里,路径都会走到哪里。请参阅我对frogb的评论,我不希望使用我拥有的单位的搜索路径。