Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 06.06.2015, 13:56   #1
AnTe
Форумчанин
 
Регистрация: 25.09.2008
Сообщений: 209
По умолчанию Dcu File not found - как найти, где модуль объявлен

Каждый раз, отказываясь от использования какого-либо модуля в проекте, сталкиваюсь с проблемой. К примеру, в проекте использовался модуль DeletedUnit.pas, который потом был выкинут из проекта и мало того - физически удалён на жёстком диске

стартую проект, ручками все ссылки, куда дотянулся, убрал, запускаю, выходит строка вроде этой:

[dcc32 Fatal Error] MyProject.dpr(48): F1026 File not found: 'D:\MyProj\DeletedUnit.dcu'

всё бы понятно, но... с этим сообщением связано окно dpr-файла проекта (!), которое, собс-но, при выводе мессажа и становится активным

курсор стоит на самом последнем объявлении формы

то есть, в каком-то из модулей проекта в секции uses объявлен модуль DeletedUnit.pas, компилятору это не нравится, он говорит об этом, но при этом он не сообщает, в каком именно модуле обнаружилась эта проблема!

каждый раз приходится стартовать поиск по всем файлам проекта, чтобы найти это злополучное объявление

может, я что-то недопонимаю, может, куда-то нажать надо, и среда меня автоматически выкинет в это окно?

ЗЫ описанная ситуация наблюдалась мною в Delphi 5,7, и остаётся в Embarcadero XE5
AnTe вне форума Ответить с цитированием
Старый 08.06.2015, 00:18   #2
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,442
По умолчанию

Например использовать менеджер проекта, чтобы корректно "отказываться", далее делать Clear, а затем Build.
И не прописывать в uses файлы руками, и вообще не прописывать ссылки на модуль, из C:\1\2\3\4\5\6\7\88\9\90\7\6\\545\ когда проект на F:\4\5\3\\346\6
Человек_Борща вне форума Ответить с цитированием
Старый 08.06.2015, 08:53   #3
AnTe
Форумчанин
 
Регистрация: 25.09.2008
Сообщений: 209
По умолчанию

Цитата:
Сообщение от Человек_Борща Посмотреть сообщение
Например использовать менеджер проекта, чтобы корректно "отказываться", далее делать Clear, а затем Build.
И не прописывать в uses файлы руками, и вообще не прописывать ссылки на модуль, из C:\1\2\3\4\5\6\7\88\9\90\7\6\\545\ когда проект на F:\4\5\3\\346\6
хм, то есть, получается, следует отказаться от привычки указывать в настройках среды папку с часто используемыми модулями, и в проект добавить используемые модули, вручную, каждый?

но разве это избавит от необходимости в прописывать руками uses модулей имена используемых файлов?
AnTe вне форума Ответить с цитированием
Старый 08.06.2015, 09:23   #4
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,442
По умолчанию

Цитата:
хм, то есть, получается, следует отказаться от привычки указывать в настройках среды папку с часто используемыми модулями, и в проект добавить используемые модули, вручную, каждый?
Да, так удобнее по двум причинам:
1. При обновлении IDE не придется прописывать 100500 путей в IDE (Рукож***во же не позволяет массово добавлять папки, да).
2. Проект всегда будет компилироваться.

Заведите папку "_Dependencies" и там складируйте все модули/компоненты/классы (даже если сами что-то написали для всех проектов, то дублируте. Проект должен собираться влюбом случае, пускай там даже OLD version вашего супер-крутого класса), которые используются проектом. Затем просто дропните её в project manager(может даже подпапки, главное чтобы исходники/DCU видно было) и сохраните, IDE пропишет относительные пути, и все будет хорошо.

Через тот же Projct Manager удаляйте зависимости, делайте Clean & build, IDE укажет вам на модули где надо почистить uses.

P.S. А ещё там есть кнопка меню "Refactoring" вроде, просто склад возможностей для чего-то масового. Например изменить название константы во всем проекте сразу. И т.д. и т.п. вроде бы удаление модулей тоже есть.

Последний раз редактировалось Человек_Борща; 08.06.2015 в 09:25.
Человек_Борща вне форума Ответить с цитированием
Старый 15.06.2015, 11:23   #5
AnTe
Форумчанин
 
Регистрация: 25.09.2008
Сообщений: 209
По умолчанию

Цитата:
Сообщение от Человек_Борща Посмотреть сообщение
Да, так удобнее по двум причинам:
1. При обновлении IDE не придется прописывать 100500 путей в IDE (Рукож***во же не позволяет массово добавлять папки, да).
ну, это плюс...

Цитата:
2. Проект всегда будет компилироваться.
так он и сейчас всегда компилируется

Цитата:
Заведите папку "_Dependencies" и там складируйте все модули/компоненты/классы (даже если сами что-то написали для всех проектов, то дублируте. Проект должен собираться влюбом случае, пускай там даже OLD version вашего супер-крутого класса), которые используются проектом. Затем просто дропните её в project manager(может даже подпапки, главное чтобы исходники/DCU видно было) и сохраните, IDE пропишет относительные пути, и все будет хорошо.
ну я как понимаю, это изначально и было сделано

Цитата:
Через тот же Projct Manager удаляйте зависимости, делайте Clean & build, IDE укажет вам на модули где надо почистить uses.
ну вот я сейчас что сделал. Был у меня модуль в общей "расшареной" для всех проектов папке, то есть, в папке, которая прописана в путях.

Хлопнул я его оттуда, перенёс в новую папочку, которую в путях не прописал

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

я открываю один из модулей проекта, например, ufmTest. Привычно набираю посреди кода fmDelegate.Execute, на что выводится сообщение, что данная форма найдена, не добавить ли её в проект? Я говорю, добавить, у меня в модуле под implementation появляется строчка

uses uFmDelegate;

чистота эксперимента гарантирована. Я переключаюсь на другие модули и забываю о внесённых изменениях. Через некоторое время я понял, что модуль fmDelegate написан плохо, надо его выкинуть вообще из проекта, либо заменить на другой. Я удаляю fmDelegate в Project-manager, и что я вижу при попытке компиляции?

Компилятор меня выкидывает в файл проекта (!) куда-то в конец, собщая:

[dcc32 Fatal Error] mISS.dpr(47): F1026 File not found: 'D:\XE5\mISS\uFmDelegate.dcu'

то есть умом я понимаю, что в каком-то из модулей осталась ссылка на удалённый модуль, например в виде "uses uFmDelegate;"

но компилятор мне не говорит о том, в каком именно модуле! Единственное, что мне остаётся - это запустить поиск по папке по слову "uFmDelegate" - есть шанс, что имя уникально и мне не вывалит стотыщ ненужных результатов.

ещё вариант - я напрягаю память, и вспоминаю, что fmDelegate я вызывал в ufmTest, я переключаюсь на модуль ufmTest, нахожу строку и удаляю вручную. Профит. Правда, как правило, вспомнить, где был описан тот или иной удалённый модуль - сложно.

Цитата:
P.S. А ещё там есть кнопка меню "Refactoring" вроде, просто склад возможностей для чего-то масового. Например изменить название константы во всем проекте сразу. И т.д. и т.п. вроде бы удаление модулей тоже есть.
в ХЕ5 нет ничего подобного
в смысле, замена констант и переменных классов - пользуюсь постоянно, а для модулей нет ничего.

Последний раз редактировалось AnTe; 15.06.2015 в 11:30.
AnTe вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите как довести эту ошибку в Delphi 7,[Fatal Error] DBTables.pas(17):File not found : 'BDE.dcu'? Vasyatko00019 БД в Delphi 2 09.12.2014 10:11
File not found '*.dcu' (делфи) NewLamer&Programer Помощь студентам 1 11.01.2013 18:50
как исправить ошибку "File not found: 'IdTCPConnection.dcu'" Даниил_глазко Работа с сетью в Delphi 4 02.11.2010 12:44
File not found: 'DBAdvEd.dcu' fezilk24 Общие вопросы Delphi 2 16.06.2010 07:24
ошибка!File not found: 'mySQLDbTables.dcu' Алёна Общие вопросы Delphi 6 05.12.2007 01:34