Nano Hash - криптовалюты, майнинг, программирование

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

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

At

uses ...,Controls,...;

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

[Неустранимая ошибка DCC] Menus.pas (*): F2051 Unit Controls был скомпилирован с другой версией Menus.TPopupMenu

пытался:

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

строить

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

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

[Ошибка DCC] jpeg.pas (872): E2065 Неудовлетворительное прямое или внешнее объявление: 'jpeg_save_markers'

а это тупик.

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


  • IIRC, если вы изменяете файл из источника delphi, вам нужно перекомпилировать все в определенном порядке, я никогда этого не делал ... 06.05.2012
  • Итак, вы изменили Menus.pas в исходной папке Delphi? Вы должны заметить, что файлы отладки и времени выполнения *.dcu хранятся в каталоге .. \ lib и, возможно, в подкаталогах (в настоящее время у меня есть только Delphi 2009, поэтому он может немного отличаться) 06.05.2012
  • Можете ли вы также использовать "controls.pas"? 06.05.2012
  • @TLama в delphi 2009 и xe2 работала безупречно. 06.05.2012
  • @SertacAkyuz Я ввел controls.pas, и это привело к добавлению пути поиска db, что дает E2065. не способ справиться с этим. 06.05.2012
  • Лучше не изменять файлы ни в одной из папок delphi по умолчанию. Поместите все измененные исходные файлы в собственную папку и включите эту папку в путь поиска параметров проекта (или в путь к библиотеке в параметрах, если вы уверены, что всегда будете использовать измененные файлы). 06.05.2012
  • Вам нужно убедиться, что вы не изменяете раздел интерфейса. Вам также может потребоваться явно установить параметры компилятора в заголовке измененного файла Menus.pas. Установите для них параметры Delphi по умолчанию. Узнайте, что они из себя представляют, создав новый проект и нажмите Ctrl + O O 06.05.2012
  • Но то, что вы пытаетесь сделать, вполне жизнеспособно. Я делаю именно это, чтобы исправить множество ошибок в Menus.pas. 06.05.2012
  • Похожие вопросы, Как перекомпилировать конкретный модуль из VCL? и Могу ли я перекомпилировать файлы .PAS, используемые IDE Delphi? и Как исправить метод в Classes.pas. Ответ Дэвида здесь более точен, хотя рука об информации. 07.05.2012

Ответы:


1

Вот как я обрабатываю модификации исходных файлов VCL:

  • Сделайте копию файла в структуре вашего проекта. Либо добавьте файл в свой проект, либо убедитесь, что путь поиска находит ваш измененный файл.
  • Вносите изменения, но только в разделе реализации. Вы не можете изменить раздел интерфейса, если используете какие-либо другие блоки, которые сами используют изменяемый вами блок.
  • Явно установите параметры компилятора в верхней части измененного исходного файла. Используйте параметры Delphi по умолчанию, которые можно найти, нажав CTRL + O O в стандартном проекте по умолчанию.

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

06.05.2012
  • в xe добавлена ​​новая процедура: CloseMenu. 07.05.2012
  • @ Дэвид, мне еще добавить значения по умолчанию {$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. 28.06.2017
  • @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}. Но я думаю, тебе и не нужно больше. 28.06.2017
  • Ну вот что у меня получилось при нажатии CTRL+O O в пустом проекте. Я вообще не знал о директиве компилятора по умолчанию в модифицированном VCL. Благодарность! 28.06.2017

  • 2

    В Delphi XE7 (и ниже) темы и стили полностью непригодны для использования.

    Итак, я пропатчил файл (Delphi XE7 \ source \ vcl \ Vcl.Themes.pas), добавил его в файл проекта, скомпилировал и получил DCU. Я заменил старый DCU (Delphi XE7 \ lib \ win32 \ release \ Vcl.Themes.dcu - то же самое для папки "debug") на новый. Теперь все работает гладко. Мне даже не нужно связывать файл PAS с моими проектами.

    09.07.2019
    Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..