如何查看a .dcu是用哪个 Delphi 版本编译的?

i1icjdpr  于 12个月前  发布在  其他
关注(0)|答案(3)|浏览(131)

如果我有一些.dcu文件,我如何才能知道它们是用哪个 Delphi 版本编译的?

我收到了一些旧的源代码,其中包含了一些.dcu文件,但我无法访问原始源代码。我想重构这个库,但为此我想先让它在原始 Delphi 版本中编译。
第一个月

yzckvree

yzckvree1#

从非官方来源,看看.dcu的第4个字节

$0F = Delphi 7
$11 = Delphi 2005
$12 = Delphi 2006 or 2007
$14 = Delphi 2009
$15 = Delphi 2010
$16 = Delphi XE
$17 = Delphi XE2
$18 = Delphi XE3
$19 = Delphi XE4
$1A = Delphi XE5
$1B = Delphi XE6
$1C = Delphi XE7
$1D = Delphi XE8
$1E = Delphi 10 Seattle
$1F = Delphi 10.1 Berlin
$20 = Delphi 10.2
$21 = Delphi 10.3
$22 = Delphi 10.4
$23 = Delphi 11

字符串
从 Delphi 2006到 Delphi 2007,.dcu格式没有变化,因此他们使用相同的格式。

编辑2016年7月2日已将XE8、10和10.1添加到列表中。

根据要求,也可以在. dcu的第二个字节中找到目标平台。值当然只对具有这些目标的版本有效。

$03 = Win32
$23 = Win64
$04 = Osx32
$14 = iOS emulator
$76 = iOS device
$77 = Android


如果你认为有错误请告诉我。

doinxwow

doinxwow2#

在寻找答案时,我遇到了Alexei Hmelnov的一个很棒的在线工具。
它可以让你上传一个.dcu文件,它会给你给予非常详细的信息。
http://geos.icc.ru:8080/scripts/WWWBinV.dll
它显示了使用的编译器、编译时间、使用的单位等。

dfty9e19

dfty9e193#

DCU文件是Borland开发的专有格式(现在的Embarcadero)作为编译代码和源代码之间的中间数据。这是 Delphi 编译器可以如此快速地生成可执行文件的主要原因。有关这种格式的信息故意很少。Borland没有提供有关它的文档,Embarcadero似乎遵循同样的道路。有一个名为"DeDe"的实用程序可以反汇编旧 Delphi 版本创建的编译文件,并带来有关这些的几个信息,包括dcu文件版本。它不适用于比版本5更新的 Delphi 编译器产生的二进制文件,但源代码包括在内,也许可以改进。

相关问题