未找到Delphi DFM

vs91vp4v  于 2022-09-21  发布在  其他
关注(0)|答案(4)|浏览(168)

我的项目中有一个xyz.pas文件引用。但那份文件不在我手里。我有那个xyz.pas文件的xyz.dcu和xyz.obj文件。当我试图编译这个项目时,我得到了错误“xyz.dcu Not Found”。因此,我已将xyz.dcu路径包含在搜索路径中。现在我收到错误“xyz.dfm Not Found”。

请给我提个解决方案。是否可以仅使用.dcu和.obj文件编译项目?

先谢谢你。问候你,纳伦

8ehkhllq

8ehkhllq1#

我希望你没有丢掉工作。

简而言之,Delphi的工作原理如下:
PAS+DFM=>DCU
DCU+RES=>EXE
有关Delphi文件的更多信息,请参阅本答案的末尾。

如果您只有DCU文件,则可以编译项目。首先,从您的文件夹中删除PAS文件,否则Delphi将尝试重新编译它(为了重新编译它,它需要DFM文件)。
我不认为Obj档案对你有任何用处。

DFM文件对您的项目非常非常重要,但并不是非常重要。如果您非常需要,您仍然可以在没有它的情况下继续工作,因为它可以根据您在PAS文件中拥有的信息和基于应用程序的图形用户界面的外观(如果您曾经看到过它运行)手动重新构建。

这里是诀窍(涉及一些工作):

只需创建一个新表单,然后查看原始PAS文件的顶部来声明该表单。它可能看起来如下所示:

TYPE
  TYourForm = class(TForm)
     xLabel: TLabel;
     yButton: TButton;
     etc
     etc
  end;

然后将所有这些控件放回您的新表单中,并完全按照PAS文件中的名称命名它们(xLabel、yButton等)。将它们排列成与原始图形用户界面类似的效果。完成后,用原始PAS文件替换新创建的PAS文件。重要提示:DFM和PAS文件的名称应匹配。编译,你就完成了!重建的图形用户界面可能看起来与原始图形用户界面不完全一样,但它应该可以做到。

**提示:

有一些工具可以从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文件包含表单中包含的对象的详细信息(属性)。通过在表单上单击鼠标右键并从弹出菜单中选择以文本形式查看,可以将其作为文本查看。Delphi将.dfm文件中的信息复制到完成的.exe代码文件中。更改此文件时应谨慎,因为更改该文件可能会阻止IDE加载该表单。表单文件可以保存为二进制或文本格式。环境选项对话框允许您指示要为新创建的表单使用哪种格式。请勿删除.dfm文件。

来源:delphi.about.com/od/eginners/a/aa032800a.htm

nhhxz33t

nhhxz33t2#

如果您仍然拥有可执行文件,则可以由任意资源管理器从应用程序资源中提取完整的原始DFM文件。例如:XN Resource Editor。在RC数据类别中,将有一个名为TXYZ的项目。

l3zydbqr

l3zydbqr3#

Delphi 20xx/XE

请注意,Delphi将文件的旧版本保存在项目目录的隐藏子目录中,名为__history

该目录中保存了.pas、.dfm和其他项目文件版本。
每次将更改保存到磁盘时都会创建这些文件。

在您的硬盘上搜索名为*.~*~的所有文件(包括隐藏的文件),这应该会调出您可能拥有的任何备份源文件。
他们会怀念你所做的最后一次更改,但至少你不必从头再来一次。

Delphi 7及之前版本

Delphi 7将这些文件保存在与项目文件相同的目录中,扩展名为.~

swvgeqrz

swvgeqrz4#

DFM-文件包含“可视化”方面(控件、组件、属性、可视化、数据...)指(比方说)形式的。如果PAS-文件(或已编译的DCU-文件)需要DFM,则必须拥有DFM,否则会出现此错误。我认为,除了拥有DFM之外,没有其他方法。

更正(如下所示,抱歉!):如果您删除PAS文件并提供DCU-文件,则只能使用DCU-文件进行编译。在这种情况下,必须使用相同的编译器版本编译DCU文件才能链接到App,因为编译器不能重新编译DCU。

相关问题