如何查看 .dcu 是使用哪个 Delphi 版本编译的?
How can I see which Delphi version a .dcu was compiled with?
如果我有一些.dcu文件;我怎样才能知道它们是用哪个 Delphi 版本编译的?
我收到了一些旧的源代码,其中包含一些.dcu 文件,但我无法访问原始源代码。我想重构这个库,但为此我只想让它先在原始 Delphi 版本中编译。
顺便说一句,编译器在这里可能会更有帮助。
它指出文件 X 是使用 "different" 版本编译的,但没有说明是哪个版本......
DCU 文件是 Borland(现在的 Embarcadero)开发的专有格式,作为编译代码和源代码之间的中间数据。这也是Delphi编译器生成可执行文件如此之快的主要原因。有关此格式的信息有意稀少。 Borland 没有提供有关它的文档,Embarcadero 似乎遵循相同的路径。
有一个名为 "DeDe" 的实用程序可以反汇编由旧 Delphi 版本创建的编译文件,并提供有关这些文件的一些信息,包括 dcu 文件版本。
它不适用于 Delphi 版本 5 以上的编译器生成的二进制文件,但包含源代码,也许可以改进。
从非官方来源,查看 .dcu 文件的第 4 个字节
[=10=]F = Delphi 7
= Delphi 2005
= Delphi 2006 or 2007
= Delphi 2009
= Delphi 2010
= Delphi XE
= Delphi XE2
= Delphi XE3
= Delphi XE4
A = Delphi XE5
B = Delphi XE6
C = Delphi XE7
D = Delphi XE8
E = Delphi 10 Seattle
F = Delphi 10.1 Berlin
= Delphi 10.2
= Delphi 10.3
= Delphi 10.4
从 Delphi 2006 到 Delphi 2007,.dcu 格式没有变化。因此他们使用相同的格式。
2016 年 7 月 2 日编辑 已将 XE8、10 和 10.1 添加到列表中。
根据要求,还有目标平台,可在 .dcu 的第二个字节中找到。值当然仅对具有这些目标的版本有效。
= Win32
= Win64
= Osx32
= iOS emulator
= iOS device
= Android
如果您认为有误,请告诉我。
在寻找答案的过程中,我 运行 进入了 Alexei Hmelnov 的一个很棒的在线工具。
它可以让你上传一个 .dcu 文件,它会给你非常详细的信息。
http://geos.icc.ru:8080/scripts/WWWBinV.dll
它显示了使用的编译器、编译时间、使用的单元等
如果我有一些.dcu文件;我怎样才能知道它们是用哪个 Delphi 版本编译的?
我收到了一些旧的源代码,其中包含一些.dcu 文件,但我无法访问原始源代码。我想重构这个库,但为此我只想让它先在原始 Delphi 版本中编译。
顺便说一句,编译器在这里可能会更有帮助。 它指出文件 X 是使用 "different" 版本编译的,但没有说明是哪个版本......
DCU 文件是 Borland(现在的 Embarcadero)开发的专有格式,作为编译代码和源代码之间的中间数据。这也是Delphi编译器生成可执行文件如此之快的主要原因。有关此格式的信息有意稀少。 Borland 没有提供有关它的文档,Embarcadero 似乎遵循相同的路径。 有一个名为 "DeDe" 的实用程序可以反汇编由旧 Delphi 版本创建的编译文件,并提供有关这些文件的一些信息,包括 dcu 文件版本。 它不适用于 Delphi 版本 5 以上的编译器生成的二进制文件,但包含源代码,也许可以改进。
从非官方来源,查看 .dcu 文件的第 4 个字节
[=10=]F = Delphi 7
= Delphi 2005
= Delphi 2006 or 2007
= Delphi 2009
= Delphi 2010
= Delphi XE
= Delphi XE2
= Delphi XE3
= Delphi XE4
A = Delphi XE5
B = Delphi XE6
C = Delphi XE7
D = Delphi XE8
E = Delphi 10 Seattle
F = Delphi 10.1 Berlin
= Delphi 10.2
= Delphi 10.3
= Delphi 10.4
从 Delphi 2006 到 Delphi 2007,.dcu 格式没有变化。因此他们使用相同的格式。
2016 年 7 月 2 日编辑 已将 XE8、10 和 10.1 添加到列表中。
根据要求,还有目标平台,可在 .dcu 的第二个字节中找到。值当然仅对具有这些目标的版本有效。
= Win32
= Win64
= Osx32
= iOS emulator
= iOS device
= Android
如果您认为有误,请告诉我。
在寻找答案的过程中,我 运行 进入了 Alexei Hmelnov 的一个很棒的在线工具。
它可以让你上传一个 .dcu 文件,它会给你非常详细的信息。
http://geos.icc.ru:8080/scripts/WWWBinV.dll
它显示了使用的编译器、编译时间、使用的单元等