找到所有外部依赖项很容易。只需运行程序并打开模块信息窗口即可。但是,如何找到所有内部依赖项?我知道程序会保留所有单元的列表,因为我已经在初始化代码中跟踪了一两次。但有没有简单的方法从调试器访问此列表?
答案 0 :(得分:25)
Delphi调试器可以显示哪些单元被编译成模块(exe,dll或包)。您可以在Modules视图中查看(View | Debug Windows | Modules)。单击左上窗格中的模块,左下窗格将显示该模块中内置的所有编译单元。如果某个特定的编译单元由多个源文件组成(即.pas和.inc文件),那么也会显示(当你展开comp单元时)。
或者,您可以让Delphi编译器在编译项目时通过传递--depends向您显示已使用的.dcus列表。它将输出一个.d文件,其中包含所需的.dcus(和.dcps)列表。
答案 1 :(得分:6)
我使用GExperts项目依赖项 使用“Used By ...”,您可以看到包含但未被任何人使用的单位。 但是你看不到包含在use子句中的单元,当它们没有任何实际调用的代码时可以删除。
这是帮助:
项目依赖关系
项目依赖性专家使您能够查看特定单位使用的单位,以及使用特定单位的单位。激活此专家后,它会解析当前项目的所有使用子句的源代码,并构建依赖项列表。要查看特定单元的依赖关系信息,请在左窗格中单击它。右侧窗格将包含依赖项信息。间接依赖性是特定单位的使用单位使用的单位。
您可以通过单击工具栏上的刷新按钮随时刷新依赖关系信息,也可以通过单击列标题对文件列表进行排序。
(来源:gexperts.org)
OTOH,您也可以使用免费Peganza's ICARUS作为更详细的报告工具,但交互性较差...
答案 2 :(得分:6)
另一种相当麻烦的方法是生成一个地图文件,它包含程序中使用的所有单位的列表。
答案 3 :(得分:4)
您是否从Peganza Software查看了Pascal Analyzer或免费限制版Icarus?他们将创建“使用报告”,告诉您哪个模块使用了其他模块,因此应该为您提供您所追求的信息。
马克
答案 4 :(得分:4)
GExperts有一个Project Dependencies工具。我在尝试追踪用过的单位之前使用过它。您无法在其中进行搜索,但可以将列表导出为CSV文件并在那里搜索。这也仅列出了使用部分中的内容。如果你有一个未使用的模块,它仍然会出现。
答案 5 :(得分:3)
我知道至少有两种方法可以尝试查看项目中使用的所有单位
答案 6 :(得分:1)
最简单的方法是编译程序并检查编译器创建的.dcu
。确保设置编译器以在单独的目录中创建.dcu
,例如c:\dcu
。我创建了一个简单的实用程序,在.pas
中搜索编译器搜索路径中的每个.dcu
文件(可以从.cfg
,.dof
或{{1文件)。
答案 7 :(得分:1)
您可以将MAP文件与MapFileStats结合使用,这不仅会为您提供所有依赖项,还会为您提供最终可执行文件中的代码(和资源)数量。
有用的是发现你有依赖的单位,但几乎没有使用,以及发现“肥猪”单位,这些单位带有所有东西加上厨房水槽。
FWIW,减少依赖性和消除生猪不仅有利于可执行文件的大小,在升级到新版本的时候,这也是有益的。
答案 8 :(得分:0)
有一个名为UsgParse的(相当古老的)实用工具。它构建了项目引用的所有单元的树视图。
我在NexusDB网站上找到了一份副本 http://coding.derkeiler.com/Archive/Delphi/borland.public.delphi.thirdpartytools.general/2004-03/0231.html
来源: http://www.nexusdb.com/downloads/USGParse/USGParse_src.zip