13

.dcu ファイルがいくつかある場合。それらがコンパイルされた Delphi のバージョンを確認するにはどうすればよいですか?

古いソース コードを受け取りました。いくつかの .dcu ファイルが含まれていますが、元のソース コードにアクセスできません。このライブラリをリファクタリングしたいのですが、そのためには、最初に元の Delphi バージョンでコンパイルしたいだけです。


ところで、ここではコンパイラがもう少し役立つ可能性があります。それは、ファイル X が「異なる」バージョンでコンパイルされたことを示しています。

4

3 に答える 3

22

非公式の情報源から、.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

Delphi 2006 から Delphi 2007 に移行する .dcu 形式に変更はありません。したがって、同じものを使用します。

編集 2016 年 7 月 2 日XE8、10、および 10.1 をリストに追加しました。

要求に応じて、.dcu の 2 番目のバイトにあるターゲット プラットフォームも提供されます。もちろん、値はこれらのターゲットを持つバージョンに対してのみ有効です。

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

エラーがあると思われる場合はお知らせください。

于 2015-02-20T07:48:11.940 に答える
5

答えを探しているときに、Alexei Hmelnov による素晴らしいオンライン ツールに出くわしました。

.dcu ファイルをアップロードすると、そのファイルに関する非常に詳細な情報が得られます。

http://geos.icc.ru:8080/scripts/WWWBinV.dll

使用されたコンパイラ、コンパイル時間、使用されたユニットなどが表示されます。

于 2015-02-23T15:22:21.167 に答える
3

DCU ファイルは、コンパイルされたコードとソース コードの間の中間データとして Borland (現在の Embarcadero) で開発された独自の形式です。これが、Delphi コンパイラが実行可能ファイルを非常に高速に生成できる主な理由です。この形式に関する情報は、意図的に不足しています。Borland はそれに関するドキュメントを提供していませんが、Embarcadero は同じ道をたどっているようです。「DeDe」というユーティリティがあり、Delphi の古いバージョンで作成されたコンパイル済みファイルを逆アセンブルし、dcu ファイルのバージョンなど、これらに関するいくつかの情報を取得できます。バージョン 5 より新しい Delphi コンパイラで生成されたバイナリでは機能しませんが、ソース コードが含まれているため、改善される可能性があります。

于 2015-02-19T23:44:08.880 に答える