Вопрос по – Как перекомпилировать изменения в исходный файл VCL (Menus.pas)?

8

У нас есть модифицированные menus.pas.

В

<code>uses ...,Controls,...;
</code>

Компилятор выдал фатальную ошибку:

[DCC Fatal Error] Menus.pas(*): F2051 Unit Controls was compiled with a different version of Menus.TPopupMenu

пытался:

удалил все dcu в проекте.

строить

построить все

попытался добавить файл в путь к библиотеке, который приводит к добавлению папки db (также из vcl), а затем к

[DCC Error] jpeg.pas(872): E2065 Unsatisfied forward or external declaration: 'jpeg_save_markers'

который тупик.

удалил control.dcu (все 3), и delphi не знал, как автоматически их перекомпилировать, вместо этого сообщил, что Control.dcu отсутствует.

Итак, вы изменилиMenus.pas в исходной папке Delphi? Вы должны заметить, что отладка и время выполнения*.dcu файлы хранятся в каталоге .. \ lib и, необязательно, в подкаталогах (в данный момент у меня есть только Delphi 2009 вручную, поэтому он может немного отличаться) TLama
IIRC, если вы изменяете файл из источника delphi, вам нужно перекомпилировать все в определенном порядке, я никогда этого не делал ... ComputerSaysNo
Лучше не меняйте файл ни в одной из стандартных папок delphi. Поместите все ваши измененные исходные файлы в свою собственную папку и включите эту папку в путь поиска параметров проекта (или в путь библиотеки в параметрах, если вы «всегда будете использовать измененные файлы»). Sertac Akyuz
Похожие вопросы,How to recompile a specific unit from the VCL? а такжеCan I recompile the .PAS files used by the Delphi IDE? а такжеHow to patch a method in Classes.pas, Ответ Дэвида здесь более точный, хотя и под рукой по информации. LU RD
Вы должны убедиться, что вы не изменяете раздел интерфейса. Вам также может понадобиться явно установить параметры компилятора в заголовке измененного файла Menus.pas. Установите для них параметры Delphi по умолчанию. Узнайте, что они из себя представляют, создав новый проект, и нажмите Ctrl + O O David Heffernan

Ваш Ответ

1   ответ
12

Make a copy the file in your project structure. Either add the file to your project, or make sure the search path finds your modified file. Make modifications, but only in the implementation section. You are not able to modify the interface section if you use any other units that themselves use the unit you are modifying. Explicitly set the compiler options at the top of the modified source file. Use default Delphi options, as found by pressing CTRL+O O in a default vanilla project.

Я полагаю, что один из последних двух пунктов - это то, что сбивает вас с толку.

@ Дэвид, я должен добавить{$MINSTACKSIZE $00004000}, {$MAXSTACKSIZE $00100000}, {$IMAGEBASE $00400000} также по умолчанию? или только по умолчанию$A+,B-,C+,D+,E-,F-,G+,H+,I+,J+,K-,L+,M-,N+,O+,P+,Q-,R-,S-,T-,U-,V+,W-,X+,Y+,Z1} (Delphi 5) - который генерируется сCTRL+O O.
Ну вот что я получил при нажатииCTRL+O O в пустом проекте. Я вообще не знал о директиве компилятора по умолчанию в модифицированном VCL. Спасибо!
новая процедура была добавлена в xe: CloseMenu. none
@kobik У моих юнитов просто есть{$R-,T-,H+,X+}, Я подозреваю, что в моих проектах параметры компиляции совпадают со всеми остальными. Добавление полного сайта, например, не повредит.{$A+,B-,C+,D+,E-,F-,G+,H+,I+,J+,K-,L+,M-,N+,O+,P+,Q-,R-,S-,T-‌​,U-,V+,W-,X+,Y+,Z1}, Но тебе не нужно больше, чем я думаю.

Похожие вопросы