Как очистить любые выходные файлы для Lazarus (или, возможно, Delphi)?

Я был в тупике, когда мой недавний проект Lazarus Pascal начал выдавать странную ошибку CIRCULAR REFERENCE 2 дня назад.

Теперь я удалил ВСЕ элементы проекта и открыл только файл LPR. Когда я нажимаю F9 для компиляции и запуска, я вижу ту же ошибку. Поэтому я подозреваю, что есть некоторые старые выходные файлы, которые испортились.

Как я могу идентифицировать и удалить их, чтобы мой проект скомпилировался?

Я использую Ubuntu 12.04 с Lazarus 1.0.10 + PostgreSQL.

Бесконечно благодарен!

РЕДАКТИРОВАТЬ: 2013-11-02

Я только что вернулся после ЦУНАМИ! Я пробовал много вещей и, наконец, отформатировал свою ОС и вернулся заново. Новые проекты работают нормально. Но мой старый проект с проблемой все тот же. Он запускает циклическую ошибку ссылки:

stdctrls.pp(9,52) Fatal: Circular unit reference between StdCtrls and LCLIntf

Самое смешное, что указанная строка ПУСТА. Есть комментарии до и после. Меня беспокоит ПОЧЕМУ? Я НЕ использую LCLIntf в своем коде.

РЕДАКТИРОВАТЬ: 2013-11-03

Я заметил странную вещь. У меня был файл LPS для проекта. В нем было несколько записей со ссылками на StdCtrls. Затем я изменил параметр проекта, чтобы НЕ использовать файл сеанса. Вместо этого он использует только файл LPI. Но теперь я нахожу ту же запись StdCtrls в своем файле LPI. Я не знаю, почему это происходит. Я открыл запись файла LPI со ссылкой на StdCtrls (и даже удалил файл резервной копии). Но каждый раз, когда я открываю его в Lazarus, запись возвращается туда.

Это запись, которую я нашел и удалил.

  <Unit29>
    <Filename Value="/usr/share/lazarus/1.0.12/lcl/stdctrls.pp"/>
    <UnitName Value="StdCtrls"/>
    <WindowIndex Value="0"/>
    <TopLine Value="1"/>
    <CursorPos X="52" Y="9"/>
    <UsageCount Value="10"/>
  </Unit29>

Я твердо верю, что именно это вызывает ошибку циклической ссылки.

Любая идея о том, КАК я могу избавиться от этого и исправить мой проект?

Спасибо!


person itsols    schedule 29.10.2013    source источник


Ответы (2)


Возможны и другие причины. Взаимные ссылки могут вызывать кажущееся мимолетное поведение (в зависимости от порядка компиляции). Встраивание кросс-юнитов усугубляет это.

Попробуйте свести его к минимуму до нескольких единиц, а затем поиграйте с взаимными ссылками (единицы, использующие друг друга либо напрямую, либо как часть цикла USES), и сначала отключите все встраивания в соответствующих единицах.

person Marco van de Voort    schedule 29.10.2013
comment
Боюсь, я не могу удалить ни одного юнита. У меня есть только один для каждой формы и два дополнительных модуля, которые имеют общие функции. Это все. Но я думаю, что это какой-то внутренний вызов между LCLIntf и StdCtrls, который вызывает катастрофу. В любом случае спасибо за ваш вклад. Действительно ценю это! - person itsols; 02.11.2013
comment
Знаете ли вы, когда и почему LCLIntf вызывается в стандартной форме, а кроме файлов lfm и pas, где мне искать код? - person itsols; 02.11.2013

Попробуйте использовать Shift-F9 - он запустит build, который должен скомпилировать все файлы с нуля. Если это все равно не поможет, вы можете попробовать удалить некоторые .ppu файлы, которые являются скомпилированными модулями. Однако будьте осторожны, чтобы не удалить собственные .ppu Lazarus, которые необходимы для компиляции.

person Serhii Kheilyk    schedule 02.11.2013
comment
Большое спасибо за ваш вклад. Я попробовал ваши методы, но они тоже не работают :/ - person itsols; 02.11.2013