【发布时间】:2014-07-09 22:16:57
【问题描述】:
我拥有打开单元和代码所需的所有文件,但我无法进行任何更改或编译,因为缺少 Project.dproj 和 Project.dpr 文件。但是,我有 .exe 文件。有没有什么方法可以从.exe文件中提取上述文件?
【问题讨论】:
-
您从哪里获得 .pas 文件?
-
从头开始创建一个项目,通常 *.dpr 内容是刻板的。
我拥有打开单元和代码所需的所有文件,但我无法进行任何更改或编译,因为缺少 Project.dproj 和 Project.dpr 文件。但是,我有 .exe 文件。有没有什么方法可以从.exe文件中提取上述文件?
【问题讨论】:
如果您拥有所有源文件,即 .pas 和 .dfm 文件,那么我要做的第一件事就是将它们全部添加到一个新项目中并尝试编译它。它要么工作,这意味着你已经得到了你需要的一切,要么它会产生错误。
会出现三种错误:
第一个是最有可能的——表单可能使用了您尚未安装的组件。如果您尝试在 IDE 中打开表单,这将是显而易见的。如果他们没有大张旗鼓地打开,太好了!如果您收到一个警告框,上面写着“无法定位组件:删除对它的引用?”或者类似的东西,那么你可能已经被水洗了。
第二个是特定于版本的错误——那些陈旧而粗俗且不再受语言支持的东西。
第三,程序可能会使用你没有的运行时库。
【讨论】:
编译器会在构建时添加 RTTI 元数据,包括单元名称,如果您知道 RTTI 表的布局方式,则可以提取这些元数据。单元列表是 DPR 文件的主要组成部分,但访问它需要一些认真的工作,而且我不知道那里有任何工具可以读取在 Delphi 7 时代之后一直保持最新的 RTTI 表。
至于 .dproj 文件,你不走运。这实际上不包含任何“编译”到 EXE 中的代码;它是一组关于如何生成 EXE 的构建说明。但如果 Delphi IDE 没有,它可以从 .dpr 生成一个默认的 .dproj,如果你能生成的话。
不过,我很好奇。您是如何获得 .pas 文件而不是 .dpr 的?
【讨论】: