我有一个应用程序,它是在Turbo Pascal 5中开始的,现在是Delphi 7(该项目的根源已超过20年)。我们正在尝试将此项目移至Delphi XE。
有一个单元正在编译到exe中,根本不应该编译到这个项目中。我无法正确追踪它是如何进入编辑的。
是否有日志或其他方法可以用来查看正在编译的单元的顺序,以便我可以追溯这个问题?
注意:我已经尝试使用ICARUS工具来完成跟踪而没有成功。
编辑:我确信使用蛮力和足够的时间我可以解决这个问题。我正在寻求的是一个更优雅的解决方案,如果有的话。答案 0 :(得分:5)
要跟踪订单,您可以尝试使用Process Monitor之类的工具来监控磁盘I / O. Delphi本身并没有记录这种信息。
要了解为什么将该单元包含在您的程序中,可以采用更简单的方法。只需删除(或隐藏)单位即可。编译将失败,编译器将指向提及不存在单元的uses
子句。
答案 1 :(得分:1)
我在问题Can I determine the order in which my units have been initialized?中的回答可以在这里提供帮助。
它将列出单位的加载顺序,之前单位可能负责加载单位。
答案 2 :(得分:0)
当我在编辑中发现这样的问题时, 我做了以下事情:
检查IDE库路径。删除不必要的和无关的目录。
检查项目搜索路径。删除不必要的和无关的目录。
删除所有DCUS。
查找所有Windows Vista / Windows 7 / Windows8“虚拟商店”内容并删除,同时找到任何无关的BPL或DCP,然后删除。
为不需要的单位创建UnitAlias。单位别名“UnwantedUnit = GoAway”。
生成。 (在这种情况下,始终使用构建,而不是编译)
这使得找到失败的单位变得更加容易。
答案 3 :(得分:0)
重命名文件系统中.pas文件的所有出现并删除所有相应的DCU文件。然后构建您的项目。如果使用了,编译器将发现它。