Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Общие вопросы > Проблема с добавлением модуля в проект


Автор: Saddam 12.11.2007, 17:06
Добрый день, проблема вот в чем...

Есть довольно крупный проект, созданный в BDS 2006. В него включено большое число форм.
При импортировании одной из них возникла ошибка по причине того, что находившийся на форме компонент не был установлен в среде разработки. Его установка и не планировалась, поэтому его исходник был подправлен с целью избавиться от этого компонента. DFM-файл также пришлось немного подправить вручную.
Далее, файл был удален из проекта и импортирован заново, но возникла вот такая вот ошибка "The project already contains a form or module named [имя модуля]", причем сам PAS-файл в проект добавился и открылся. Более того при нажатии на F12 общий вид формы отображается, что означает что DFM тоже подключился к проекту. Проект билдится и работает, но в Project Manager нет "плюсика" с приложенным к модулю DFM-файлом. (см. приложенный рисуночек).

При повторном удалении модуля из проекта он якобы удаляется успешно и из списка и из файла проекта но при сборке я получаю вот такое вот сообщение (уже после компиляции на этапе Линковки) :
File not found '[имя модуля].DFM'

А зачем его искать, если я уже удалил его из проекта? Такое ощущение, что он осел где-то в ресурсах среды и вовсе не удаляется из проекта... как вылечить? Может у кого такое случалось?

P.S. Если добавлять данный модуль предварительно сменив ему имя - всё впорядке, есть и PAS и DFM, но переименовывать не хочется, так как другие файлы на него уже ссылаются.

P.P.S Знакомый говорил что у него на Delphi 5 такие же точно проблемы были, но он их так и не решил.

Автор: Snowy 12.11.2007, 17:17
Отсутствие плюсика - ошибка анализа кода средой, которая вполне может быть вызвана некорректным исправлением.
Что касается сообщения о "не найден" - не имеет значения, подключен файл к проекту или нет.
Если другие модули на него ссылаются, он включается автоматически, о чём Delphi сообщает варнингом в логе сборки.

Автор: Saddam 13.11.2007, 10:22
Цитата

Отсутствие плюсика - ошибка анализа кода средой, которая вполне может быть вызвана некорректным исправлением.


2Snowy: Исправлений в модуле и DFM было минимум - всего 1 строка, в корректности которых я убеждаюсь, если переименую модуль и подключу его к проекту. Всё работает. А если вернуть ему старое имя, он подключается "криво" (так, как я описал в 1 посте). Есть ли способ исправить эту ошибку? Или всё же прийдется включать его в проект с новым именем...

Автор: Snowy 13.11.2007, 12:48
Убрать из проекта.
Стереть dcu файл.
Добавить в проект только pas.
Убедиться, что в pas есть строка {$R *.dfm}
Сбилдить проект. (build, не compile).

Автор: Saddam 13.11.2007, 15:30
Попытался, вот что вышло:
1. Убрал модуль из проекта.
2. Удалил файл DCU.
3. Добавил в проект файл PAS
- При добавлении файла возникла ошибка, которую я уже получал ранее (см. приложенную картинку)
- Файл всё равно добавился в проект но без прикреплённой DFM под плюсиком (см. картинку в моем посте №1)

4. Строка {$R *.DFM} в модуле всегда присутствовала и продолжает присутствовать.
5. Проект билдится и работает, но от описываемой баги я так и не избавился, этот модуль без DFM-ки продолжает мозолить глаза :(


Кстати, Вы написали, что нужно добавить в проект только PAS, а BDS по идее сразу отыскивает рядом DFM-файл и добавляет его тоже. Поэтому я повторил опыт, переименовав на время DFM-файл, чтобы добавить один лишь PAS-файл.
Результат - при добавлении PAS-файла возникла ошибка:
Error creating form: Cannot open file "[путь к модулю]\[имя модуля].DFM" не удается найти указанный файл.

Вот такие дела... Есть еще идеи?

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)