Как перекомпилировать конкретный модуль из VCL?
Я хочу применить исправление из QC к модулю Delphi 2009 (как это происходит с DBClient). Я знаю, что мне нужно скопировать устройство в другой каталог и внести изменения в копию. Как мне тогда заставить Delphi скомпилировать этот модуль и использовать его в пользу уже существующего DCU?
3 ответа
Если вы не хотите изменять исходный файл.Pas, я делаю это, копируя файл.Pas в папку моего приложения, затем выбираю встроенный проект, он создаст новый файл dcu в папке моего приложения, который будет использоваться вместо оригинальный.
Это своего рода последнее средство (и не поддерживается CodeGear), но я делаю что-то похожее на Мухаммеда, когда это необходимо. За исключением того, что вместо того, чтобы помещать какие-либо измененные модули в папку приложения, я помещаю их в свою собственную папку вместе с остальным кодом моей библиотеки и включаю эту папку в путь к моей библиотеке, где она будет использоваться всеми моими проектами. Это также препятствует тому, чтобы у меня было много (возможно немного отличающихся) копий, висящих вокруг.
Я также проверяю любые обновления, чтобы увидеть, что изменилось, чтобы я мог либо удалить измененные модули, либо повторно применить изменения к более новым (и, вероятно, лучшим) модулям из CodeGear.
Я никогда не делал это сам, но есть проекты в {RAD}\source\rtl
вместе со скриптом пакетной сборки. Я считаю, что это облегчает перекомпиляцию функций RTL. Другие модули должны быть перекомпилированы проще.
Если изменения, которые вы хотите сделать, являются локальными и единицы не используются широко другими модулями RTL/VCL, самый простой способ - разместить копии измененных модулей отдельно от их стандартного места.
Другим вариантом является исправление во время выполнения, также известное как обход.