Поиск неиспользуемых ресурсов Delphi/C++Builder. Как это работает? PDF Печать E-mail

В Radialix версии 2.11.05 добавлен поиск неиспользуемых ресурсов Delphi/C++Builder  (DFM ресурсы в разделе RT_RCDATA).  У таких ресурсов автоматически устанавливается статус Только для чтения и переводить их не требуется. Это в некоторых случаях позволяет значительно сократить объем перевода. Проверка, используется ли ресурс, производится при его добавлении в проект локализации.

Почему появляются неиспользуемые DFM ресурсы?

Компилятор Delphi/C++Builder может помещать в PE файл DFM ресурсы, которые не используется  кодом программы. Возникает это из-за того, что в проектах Delphi нет жесткой связи между DFM ресурсом и классом, который его использует.  Компилятор не помещает в PE файл код и информацию о типах неиспользуемого класса. В то же время ресурсы, подключенные к проекту с помощью директивы {$R *.dfm} всегда размещается в секции ресурсов PE файла.

Чаще всего неиспользуемые ресурсы появляются при использовании компонентов и библиотек третьих разработчиков. Достаточно косвенного подключения к проекту модуля с директивой {$R *.dfm} .

Для поиска неиспользуемых DFM ресурсов Radialix  извлекает из PE файла информацию о типах и проверяет наличие в ней класса с именем, соответствующим имени компонента в ресурсе DFM. Если информация о таком классе отсутствует, то соответствующий ресурс считается неиспользуемым. Конечно же, эта проверка работает, если PE не упакован и не является библиотекой ресурсов. Для упакованных файлов и библиотек ресурсов поиск неиспользуемых ресурсов не производится.

PE файл может содержать достаточно много неиспользуемых ресурсов. Вот, например, список неиспользуемых ресурсов для одного из файлов:

rt_check

Почти 40 неиспользуемых ресурсов DFM общим размером около 800КБ!