在Delphi 7中,如何跟踪编译单元的顺序?

时间:2013-09-20 22:12:46

标签: delphi delphi-7

我有一个应用程序,它是在Turbo Pascal 5中开始的,现在是Delphi 7(该项目的根源已超过20年)。我们正在尝试将此项目移至Delphi XE。

有一个单元正在编译到exe中,根本不应该编译到这个项目中。我无法正确追踪它是如何进入编辑的。

是否有日志或其他方法可以用来查看正在编译的单元的顺序,以便我可以追溯这个问题?

注意:我已经尝试使用ICARUS工具来完成跟踪而没有成功。

编辑:我确信使用蛮力和足够的时间我可以解决这个问题。我正在寻求的是一个更优雅的解决方案,如果有的话。

4 个答案:

答案 0 :(得分:5)

要跟踪订单,您可以尝试使用Process Monitor之类的工具来监控磁盘I / O. Delphi本身并没有记录这种信息。

要了解为什么将该单元包含在您的程序中,可以采用更简单的方法。只需删除(或隐藏)单位即可。编译将失败,编译器将指向提及不存在单元的uses子句。

答案 1 :(得分:1)

我在问题Can I determine the order in which my units have been initialized?中的回答可以在这里提供帮助。

它将列出单位的加载顺序,之前单位可能负责加载单位。

答案 2 :(得分:0)

当我在编辑中发现这样的问题时, 我做了以下事情:

  1. 检查IDE库路径。删除不必要的和无关的目录。

  2. 检查项目搜索路径。删除不必要的和无关的目录。

  3. 删除所有DCUS。

  4. 查找所有Windows Vista / Windows 7 / Windows8“虚拟商店”内容并删除,同时找到任何无关的BPL或DCP,然后删除。

  5. 为不需要的单位创建UnitAlias。单位别名“UnwantedUnit = GoAway”。

  6. 生成。 (在这种情况下,始终使用构建,而不是编译)

  7. 这使得找到失败的单位变得更加容易。

答案 3 :(得分:0)

重命名文件系统中.pas文件的所有出现并删除所有相应的DCU文件。然后构建您的项目。如果使用了,编译器将发现它。