Как перекомпилировать конкретный модуль из VCL? - PullRequest
9 голосов
/ 28 июня 2009

Я хочу применить исправление из QC к модулю Delphi 2009 (как это происходит с DBClient).Я знаю, что мне нужно скопировать устройство в другой каталог и внести изменения в копию.Как мне тогда заставить Delphi скомпилировать этот модуль и использовать его в пользу уже существующего DCU?

Ответы [ 3 ]

16 голосов
/ 28 июня 2009

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

3 голосов
/ 17 июля 2009

Это своего рода последнее средство (и не поддерживается CodeGear), но я делаю что-то похожее на Мухаммеда, когда это необходимо. За исключением того, что вместо того, чтобы помещать какие-либо измененные модули в папку приложения, я помещаю их в свою собственную папку вместе с остальным кодом моей библиотеки и включаю эту папку в путь к моей библиотеке, где она будет использоваться всеми моими проектами. Это также не дает мне иметь несколько (возможно, немного разных) копий.

Я также проверяю любые обновления, чтобы увидеть, что изменилось, чтобы я мог либо удалить измененные модули, либо повторно применить изменения к более новым (и, вероятно, лучшим) модулям из CodeGear.

0 голосов
/ 29 января 2016

Я никогда не делал этого сам, но в {RAD}\source\rtl есть проекты вместе со скриптом пакетной сборки. Я считаю, что это облегчает перекомпиляцию функций RTL. Остальные единицы должны быть перекомпилированы проще.

Если изменения, которые вы хотите сделать, являются локальными и единицы не используются широко другими модулями RTL / VCL, самый простой способ - разместить копии измененных модулей отдельно от их стандартного места.

Еще одна опция - исправление во время выполнения, также известное как обход.

...