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

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

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


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

3 ответа

Решение

Из неофициальных источников, посмотрите на 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

Дайте мне знать, если вы думаете, что есть ошибка.

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

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

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

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

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

Другие вопросы по тегам