Как я могу узнать, с какой компиляции Delphi была скомпилирована .dcu?

Если у меня есть файлы .dcu; как я могу узнать, какая версия Delphi была скомпилирована?

Я получил некоторый старый исходный код, и некоторые .dcu файлы включены, и у меня нет доступа к исходному исходному коду. Я хочу реорганизовать эту библиотеку, но для этого хочу сначала скомпилировать ее в исходной версии Delphi.


<я > <Суб > Кстати, компилятор здесь может быть немного полезнее. В нем говорится, что файл X был скомпилирован с "другой" версией, не говоря о том, какая версия... Суб >

Ответ 1

Из неофициальных источников посмотрите на 4-й байт .dcu

$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

Не было изменений в формате .dcu от Delphi 2006 до Delphi 2007. Поэтому они используют то же самое.

Изменить 2 июля 2016 г. Добавлены XE8, 10 и 10.1 в список.

По запросу также целевая платформа, которая находится во втором байте .dcu. Значения, конечно, действительны только для версий, у которых есть эти цели.

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

Сообщите мне, если вы считаете, что есть ошибка.

Ответ 2

Ища ответ, я наткнулся на потрясающий онлайн-инструмент Алексея Хмельнова.

Он позволяет загружать файл .dcu, и он предоставит вам чрезвычайно подробную информацию об этом.

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

Показывает используемый компилятор, время компиляции, используемые единицы и т.д.

Ответ 3

Файл DCU представляет собой проприетарный формат, разработанный в Borland (теперь Embarcadero) в качестве промежуточных данных между скомпилированным кодом и исходным кодом. Это основная причина, по которой компилятор Delphi может генерировать исполняемый файл так быстро. Информация об этом формате преднамеренно скудна. Borland не предоставила документацию об этом, похоже, Embarcadero придерживается того же пути. Существует утилита под названием "DeDe" , которая может дизассемблировать скомпилированные файлы, созданные старыми версиями Delphi, и предоставить несколько сведений об этих, включая версию файла dcu. Он не работает для двоичных файлов, созданных компиляторами Delphi, но чем версия 5, но исходный код включен, возможно, он может быть улучшен.