如果我有一些.dcu文件;我怎样才能找出他们编译的Delphi版本?
我收到了一些旧的源代码,并且包含了一些.dcu文件,而且我无法访问原始源代码。我想重构这个库,但为此我想让它首先在原始的Delphi版本中进行编译。
<子> 顺便说一句,编译器在这里可能会更有帮助。 它声明文件X是用&#34;不同的&#34;编译的。版本,不说 - 是 - 那个版本...... 子> 的
答案 0 :(得分:19)
从非官方来源,查看.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
从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
如果您认为有错误,请告诉我。
答案 1 :(得分:5)
在寻找答案时,我遇到了阿列克谢·赫梅尔诺夫的一个很棒的在线工具。
它允许您上传.dcu文件,它会为您提供有关它的非常详细的信息。
http://geos.icc.ru:8080/scripts/WWWBinV.dll
它显示了使用的编译器,编译时间,使用的单位等。
答案 2 :(得分:3)
DCU文件是Borland(现为Embarcadero)开发的专有格式,作为编译代码和源代码之间的中间数据。这是Delphi编译器如此快速生成可执行文件的主要原因。关于这种格式的信息是故意稀缺的。 Borland没有提供有关它的文件,Embarcadero似乎也遵循相同的道路。 有一个名为"DeDe"的实用程序可以反汇编由旧Delphi版本创建的编译文件,并提供有关这些文件的几个信息,包括dcu文件版本。 它不适用于比版本5更新的Delphi编译器生成的二进制文件,但包含源代码,可能会有所改进。