Перекомпилировать измененный блок-модулей

Я должен скомпилировать свой проект с измененным блоком VCL. Я использую Делфи X Е8. Я скопировал ссылки.StdCtrls.pas от D:\Program файлы (x86)\Embarcadero\Studio\16.0\source\vcl в папку моего проекта, Где мой.файл dpr локализован, затем я изменил свою копию Vcl.StdCtrls.первенство. Я также добавил в проект. Проблема в том, что с Delphi XE8 такой метод перекомпиляции блоков VCL больше не работает. Я поместил очевидную синтаксическую ошибку в свой модифицированный Vcl.StdCtrls.pas unit. Компилятор не сообщает ошибка, которая означает, что она даже не проверяет файл. Я всегда делаю полную сборку Shift+F9. Я нашел аналогичный вопрос Как перекомпилировать конкретный блок из VCL? но, как я уже сказал, он больше не работает, не для Delphi XE8.

кроме того, измененный блок находится в моем списке использования .файл dpr:

uses
  Vcl.StdCtrls in 'D:\Dev\MYPROJECT\Vcl.StdCtrls.pas',
  ...

// это не помогает

1 ответов


кажется, это ошибка. Я думаю, вы используете пакеты времени выполнения. В XE7 такой проект не будет компилироваться - что является правильным поведением. В XE8 он компилируется, по-видимому, используя пакет среды выполнения VCL и игнорируя измененный блок.

Edit:

обратите внимание, что даже в предыдущих версиях Delphi изменение блока VCL при использовании пакетов среды выполнения все равно потребует от вас переупаковки измененных пакетов и их зависимостей (в этом случае vcl и rtl). Иначе говоря, вы не можете просто использовать измененный блок при связывании с пакетом среды выполнения, который содержит другую копию этого блока. Имена блоков должны быть уникальными в пределах всей области проекта, включая основной исполняемый файл и все связанные пакеты среды выполнения.

таким образом, решение для вас либо:

  1. не использовать пакеты среды выполнения или
  2. переупакуйте все необходимые блоки в ваши собственные пакеты времени выполнения, и соединитесь против их вместо Embarcadero-поставленного rtl, vcl так далее.