Delphi отлаживает неправильный модуль

Это странное поведение моего D2006, которое случается только иногда. У меня есть проект, который я хочу отладить. Файл, который я хочу отладить, называется Main.pas. У меня есть другой несвязанный проект с тем же именем модуля, и иногда отладка предлагает мне неправильный файл Main вместо основного модуля из текущего проекта. Это случилось со мной с другими файлами с таким же именем. Тогда я не могу отлаживать, поскольку ключи отладки не работают (они просто ничего не делают). Сталкивались ли вы с такой же проблемой? Как я могу это исправить?

Спасибо.


person Averroes    schedule 08.04.2010    source источник
comment
У меня тоже случается в Delphi 2009, если я работаю над двумя проектами, в которых модули имеют одинаковое имя - если я открываю файл, принадлежащий другой версии, отладчик начинает использовать исходный каталог других версий вместо каталогов открытого проекта ( dpr) файл.   -  person mjn    schedule 09.04.2010


Ответы (3)


Вы используете относительные пути?

Если да, я обнаружил, что это помогает установить рабочий каталог в каталог моих проектов, загружая файл из каталога моих проектов с помощью File-> Open. Навигация и загрузка явно устанавливают рабочий каталог, исправляя случай, когда вы ДУМАЕТЕ, что используете пути, относящиеся к вашему проекту, но delphi интерпретирует их относительно рабочего каталога IDE. Однако сначала закройте все остальные вкладки, чтобы избежать ошибок. Поскольку компилятор delphi является dll, он глубоко взаимодействует с IDE и, вероятно, имеет доступ к тем файлам, которые открываются. (он может компилировать несохраненные файлы!)

Если нет, то это может быть странное происшествие, но все равно имеет то же происхождение. Может помочь выработка привычки сначала закрывать другие файлы (щелкнуть правой кнопкой мыши по вкладке-> закрыть все остальные) и исправить рабочий каталог (с блоком загрузки через обходной путь открытия файла).

Мне кажется, что серия IDE BDS, похоже, страдает от этого больше, чем классические, но проблема существовала и в классических. Это может быть так же просто, как использование более причудливых опций opendialog в BDS, увеличивающих шанс изменения рабочего каталога.

обновить. Также помогает открытие проектов, когда нет других открытых проектов. Поэтому всегда щелкайте старый проект перед открытием нового и не щелкайте проект в проводнике Windows, если IDE открыта с другим загруженным проектом.

Delphi XE все еще страдает от этого

person Marco van de Voort    schedule 08.04.2010
comment
я считаю, что это абсолютно правильно. теперь, когда я открываю несвязанный файл, я никогда не использую File, Open ... я перетаскиваю файл из проводника в delphi или позволяю проводнику решать, как открыть файл. - person X-Ray; 09.04.2010
comment
+1. Я обнаружил уловку File- ›Open в дни моей работы в D2006 и привык к нему. Я никогда не удосужился проверить, нужно ли это еще в D2007. - person Uli Gerhardt; 09.04.2010
comment
Извините, я не понимаю этого ответа. Что именно мы должны делать, чтобы избежать этой проблемы, и если это произойдет, что мы можем сделать, чтобы ее исправить? Единственный способ исправить это - переименовать не ту папку. - person dan-gph; 13.02.2012
comment
Отмеченные проблемы являются результатом того, что рабочий каталог BDS IDE не соответствует каталогу проекта. Решение состоит в том, чтобы загрузить любой файл с помощью диалогового окна открытия файла из каталога проекта. Это сбрасывает рабочий каталог. Поскольку относительные части относятся к рабочему каталогу (хотя предполагается, что он совпадает с каталогом проекта), в проектах с относительными путями вы заметите это раньше. - person Marco van de Voort; 17.02.2012
comment
Спасибо, Марко. У меня это не работает. У меня должна быть другая проблема. Я дважды проверял один и тот же проект, сидя рядом. Если я щелкну идентификатор, удерживая клавишу Ctrl, Delphi откроет модуль из другого проекта. - person dan-gph; 20.02.2012

Я тоже сталкивался с этим, и теперь я склонен давать файлам уникальные имена, например, вместо Main.pas это может быть ProjectNameMain.pas.

Проверьте пути к вашей библиотеке и пути просмотра в параметрах среды

person jasonpenny    schedule 08.04.2010
comment
Если вы используете этот проект в качестве отправной точки для нового (или параллельного) проекта, все файлы необходимо переименовать: P - Представьте, как было бы иметь SysUtils50, SysUtils60, SysUtils70 и т. Д. В RTL и с каждой новой версией Delphi разработчикам нужно исправить все ссылки на названия модулей RTL :) - person mjn; 09.04.2010

Взгляните на каталоги output и DCU проекта. Вы, вероятно, берете старый DCU из общего каталога DCU. Очистите DCU и восстановите.

person Chris Thornton    schedule 08.04.2010