Delphi .PAS-код возвращается к предыдущему коду после компиляции / сборки

У меня есть проект.BPG, в котором есть коллекция файлов проекта.DPR.

  1. Открыл файл.PAS
  2. Я изменил некоторую строку кода в файле.PAS проекта.
  3. Сохранил это
  4. После изменения исходного кода я попробовал COMPILE в этом проекте.
  5. Сначала он говорит "Скомпилировано" успешно.
  6. Теперь я вижу тот же файл.PAS, изменения были потеряны. Коды, измененные на шаге 2, были потеряны. Имеет только предыдущий код.

    Поведение тоже самое для BUILD. Кто-нибудь знает об этой проблеме?

Заранее спасибо.

Обновить

Еще один намек:

Имя проекта.DPR - XX.dll. В IDE в этом проекте есть один файл с именем XX_TLB.PAS. Только в этом файле я пытался изменить некоторый код, который был возвращен после компиляции / сборки. Теперь я попытался переименовать этот файл, который дал мне сообщение об ошибке

Библиотеки типов должны иметь расширение tlb.

Также могут ли файлы.DCU и.PAS находиться в одном каталоге? Я ввел этот каталог (где существуют файлы.PAS и.DCU) в список каталогов в разделе "Инструменты-> Параметры-> Параметры Delphi-> Библиотека - Win32".

2 ответа

Решение

XX_TLB.PAS файлы являются защищенными файлами. Не редактируйте такие файлы напрямую. На самом деле в верхней части файла есть примечание, предупреждающее вас о редактировании файла.

Они обновляются каждый раз при обновлении библиотеки типов.

Увидеть Code Generated When You Import Type Library Information,

Это обновление может быть сделано IDE каждый раз, когда вы компилируете / собираете свою dll.


Вы никогда не будете редактировать этот файл из-за зависимостей библиотеки типов и зарегистрированных com-объектов. Либо вы сами изменяете объект com с помощью редактора библиотеки типов, либо создаете новый модуль, взаимодействующий с вашим классом ActiveX.

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

Другая возможность, которая приходит мне в голову, заключается в том, что у вас есть несколько копий файла. Я знал, что произойдет следующее:

  1. Вы создаете пакет, содержащий Unit1.
  2. Вы устанавливаете пакет.
  3. Затем вы делаете другой проект, который содержит другой Unit1. Возможно, копия файла находится в другом месте, чтобы он выглядел как одно и то же устройство.
  4. Затем вы изменяете копию модуля Unit1, но среда IDE иногда предпочитает открывать файл из пакета.

Суть в том, что помимо удаления пустых обработчиков событий IDE не отменит ваши изменения. Таким образом, представляется весьма вероятным, что у вас есть несколько копий файла. Чтобы разобраться в этом, вам нужно получить полный путь к файлу. В среде IDE наведите курсор на вкладку с именем файла, и в среде IDE отобразится полный путь в подсказке. Я подозреваю, что вы обнаружите, что у вас есть два разных файла.

Другие вопросы по тегам