# Совместимость компиляторов и RTTI — справка DE Decompiler

> Анализ VCL-программ Delphi 3–13 и C++Builder для Win32/Win64: определение компилятора, базы RTTI и ограничения восстановления кода C++Builder.

Canonical HTML: <https://www.de-decompiler.com/help/ru/compatibility.htm>

## Совместимость компиляторов и RTTI

DE Decompiler распознаёт версии компилятора Delphi с 3 по 13 и поддерживает VCL-приложения, созданные в C++Builder, для Win32 и Win64.

### Версии компилятора и восстановленные типы

Версии Delphi различаются структурой исполняемых файлов и форматом RTTI — информации о типах времени выполнения. Для интерпретации этих различий DE Decompiler использует знания о типах, соответствующие версии компилятора. Распознанная версия компилятора не гарантирует одинакового качества восстановления всех типов, библиотечного кода и процедур.

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

### Определение компилятора и базы сигнатур

C++Builder и Free Pascal определяются отдельно от Delphi. Сведения о компиляторе остаются корректными при использовании совместимой базы сигнатур и после загрузки сохранённого проекта. Длинные названия и диапазоны версий помещаются в поле главного окна; полные сведения доступны в подсказке.

Название компилятора определяется по входному файлу независимо от базы сигнатур, выбранной для анализа кода. Если имеющихся данных недостаточно для точного определения версии, неоднозначность сохраняется в отображаемом названии.

В коммерческих версиях DE Decompiler выбирает базу из каталога `de`: сначала для точной версии компилятора, затем для ближайшей более новой и, если её нет, для ближайшей более старой версии той же разрядности. Имена файлов имеют вид `vcl<version>.bin` или `vcl<version> x64.bin`.

Звездочка (`*`) обозначает использование заменяющей базы или базы, соответствие которой не удалось установить с достаточной уверенностью. Наведите указатель на название компилятора, чтобы увидеть имя выбранного BIN-файла. Маркер относится к подбору базы и сам по себе не означает, что файл невозможно проанализировать. Базы сигнатур доступны в коммерческих версиях.

### Приложения, созданные в C++Builder

DE Decompiler поддерживает VCL-приложения, созданные в C++Builder, для Win32 и Win64. Доступны восстановление и визуализация форм, разбор модулей, классов и функций, переходы к обработчикам событий, а также остальные инструменты анализа и экспорта.

Баз знаний RTTI для библиотек, специфичных для C++Builder, пока нет. Функции вне общей базы VCL, а также нераспознанные свойства и методы объектов могут отображаться без библиотечных имён. Поэтому качество декомпиляции кода C++Builder заметно ниже, чем для программ, написанных на Delphi. Это ограничение касается качества восстановления кода и распознавания библиотечных имён. Остальные возможности доступны для C++Builder по тем же правилам редакций, что и для программ, написанных на Delphi.

Код C++Builder восстанавливается в виде Delphi-подобного Pascal с экспортом в PAS/DFM. Исходный текст на C++ не восстанавливается. Как и при другом восстановлении нативного кода, перед использованием результата в IDE вручную проверьте и исправьте предполагаемые типы, сгенерированные имена и погрешности декомпиляции.

### Приватные функции

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

### Формы VCL

Рабочий процесс визуальных форм применяется к формам и элементам управления VCL, восстановленным из входных файлов Win32 и Win64.

### Сообщение о проблеме совместимости

DE Decompiler постоянно развивается, а качество декомпиляции улучшается по мере совершенствования поддержки компиляторов, распознавания типов и реконструкции кода.

Если вы хотите сообщить о конкретной проблеме, отправьте двоичный файл, воспроизводящий ошибку, и укажите форму или функцию, в которой она возникает. Включите ее имя и, для функции, ее адрес (если доступен), вместе с версией сборки DE Decompiler и описанием ошибки. См. [Техническая поддержка](https://www.de-decompiler.com/help/ru/support.htm) для контактных данных.
