我的项目中有一个xyz.pas文件引用。但那份文件不在我手上。我有那个xyz.pas文件的xyz.dcu和xyz.obj文件。当我试图编译这个项目时,我得到了错误"xyz.dcu not found“。所以我在搜索路径中包含了xyz.dcu的路径。现在我收到错误"xyz.dfm not found“。
请给我提个解决方案。是否可以仅使用.dcu和.obj文件编译项目?
提前谢谢。问候你,纳伦
发布于 2011-06-01 19:35:28
我希望你没有丢掉你的工作。
简而言之,Delphi是这样工作的:
PAS+DFM => DCU
DCU+RES => EXE
有关Delphi文件的更多信息,请参阅本答案的末尾。
如果您只有DCU文件,则可以编译项目。首先,从你的文件夹中删除PAS文件,否则Delphi会尝试重新编译它(为了重新编译它,它需要DFM文件)。
我不认为Obj文件对你有任何用处。
DFM文件对您的项目非常非常重要,但并不是非常重要。如果您非常需要,您仍然可以在没有它的情况下继续,因为它可以基于PAS文件中的信息和应用程序的GUI外观(如果您曾经见过它运行)手动重新构建。
这里是诀窍(涉及一些工作):
只需创建一个新表单,然后查看原始PAS文件的顶部以获取表单声明。它可能看起来像这样:
TYPE
TYourForm = class(TForm)
xLabel: TLabel;
yButton: TButton;
etc
etc
end;然后将所有这些控件放回您的新表单中,并完全按照PAS文件中的名称命名它们(xLabel、yButton等)。将它们排列成与原始GUI相似的效果。完成后,将新创建的PAS文件替换为原始PAS文件。重要提示: DFM和PAS文件的名称应该匹配。编译,你就完成了!重建的GUI可能看起来与原始GUI不完全相同,但它应该可以做到。
提示:
有一些工具可以从DCU/EXE中提取DFM文件。
下面是其中的一部分: www.delphi2.software.informer.com/download-delphi-extract-dfm
这将对你有很大的帮助!
.PAS -Delphi源文件
PAS应存储在源代码管理中
在Delphi中,PAS文件始终是单元或表单的源代码。单元源文件包含应用程序中的大部分代码。该单元包含附加到窗体的事件或其包含的组件的任何事件处理程序的源代码。我们可以使用Delphi的代码编辑器来编辑.pas文件。请勿删除.pas文件。
.DCU - Delphi编译单元
编译单元(.pas)文件。默认情况下,每个单元的编译版本存储在一个单独的二进制格式文件中,该文件与单元文件同名,但扩展名为.DCU (Delphi编译单元)。例如,unit1.dcu包含在unit1.pas文件中声明的代码和数据。重新生成项目时,不会重新编译单个单元,除非它们的源(.PAS)文件自上次编译后发生了更改,或者找不到它们的.DCU文件。安全地删除.dcu文件,因为在编译应用程序时,Delphi会重新创建它。
.DFM - Delphi
DFM应该存储在源代码控制中
这些文件始终与.pas文件成对出现。Dfm文件包含表单中包含的对象的详细信息(属性)。通过在表单上单击鼠标右键并从弹出菜单中选择view as text,可以将其作为文本查看。Delphi将.dfm文件中的信息复制到完成的.exe代码文件中。更改此文件时应格外小心,因为更改此文件可能会阻止IDE加载表单。表单文件可以保存为二进制或文本格式。环境选项对话框允许您指明要用于新创建的表单的格式。请勿删除.dfm文件。
来源: delphi.about.com/od/beginners/a/aa032800a.htm
发布于 2011-06-01 20:04:58
如果您仍然拥有可执行文件,那么您可以通过任意的资源管理器从应用程序资源中提取完整的原始DFM文件。例如:XN Resource Editor。在RC数据类别中,将有一个名为TXYZ的项目。
发布于 2011-06-01 22:51:43
Delphi 20xx/XE
请注意,Delphi将文件的旧版本保存在项目目录的隐藏子目录中,名为__history。
该目录中保存有.pas、.dfm和其他项目文件版本。
每次将更改保存到磁盘时,都会创建这些文件。
在硬盘上搜索名为*.~*~的所有文件(包括隐藏文件)。这将调出您可能拥有的任何备份源文件。
他们会错过你所做的最后一次更改,但至少你不需要重新做所有的事情。
Delphi7和之前的版本
Delphi7将这些文件保存在与项目文件相同的目录中,扩展名为.~。
https://stackoverflow.com/questions/6200163
复制相似问题