Delphi 7-Delphi XE2.проблема с файлом res


Когда я открываю проект Delphi 7 в Delphi XE2 и открываю опцию Project, я получаю ошибку:

"Unable to set Icon: Cannot open file "........AppName_Icon.ico".
The system cannot find the file specified".

Я также замечаю, что информация о версии проекта отсутствует. Проект Delphi 7 имеет .Файл Res, в котором хранится MAINICON вместе с информацией о версии. Почему Delphi XE2 не может использовать это .Файл Res для повторного просмотра информации о MAINICON и версии.

Также, если я попытаюсь скомпилировать приложение в XE2, я получу ошибку -

[BRCC32 Error] MtxReq.vrc(2): file not found: MtxReq_Icon.ico

MTXReq.vrc Файл (Новый файл) создается и MtxReq.файл res удаляется.

Почему это происходит? Я не хочу потерять значок проекта и настройки версии.файл res.

Есть ли способ заставить XE2 использовать .восстановить файл и не удалять его?

Любая помощь будет очень признательна.

Извините, что я не могу пока оставить комментарий (нужно больше точек репотации)...

Warren - Вот ответ на ваш вопрос (не просто удаление вашего .dproj файл и хранение то.только ДНР, были быстрее?)

Я удалил его .dproj, .dproj.местный Открыл дверь .ДНР в XE2 и его воссоздали .файл dproj. Он принес обратно икону из своего .но я потерял информацию о версии проекта. Только версия файла и информация о версии продукта были перенесены, но потеряли все другие сведения о версии. (Это связано с файлом манифеста по умолчанию). Затем я попробовал то, что я объяснил в шаге 1 моего решения. Я открываю ее .dproj файл в блокноте удалил записи тега под и снова открыл .файл dproj и вся информация о моей версии теперь была восстановлена. Проблема здесь заключается в $(BDS)bindefault_app.декларация. Также я заметил, что информация о версии хранится в теге под тегом in .dproj-файл и после удаления записей манифеста по умолчанию IDE правильно получает информацию о ключе версии из файла .

Так что в основном путем удаления .файл dpr я пропустил шаг извлечения и добавления .ico файл в проект, но пришлось редактировать вновь созданный .proj файл и удалить записи для манифест по умолчанию для получения информации о версии. (другим решением было бы манулли добавить информацию о версии и сохранить проект. Я этого не пробовал)

3 6

3 ответа:

Обновление 2015: Идея Реми о воссоздании .DPROJ файлы тщательно вручную, это отличный совет и должен быть рассмотрен в первую очередь, даже если мой ответ помечен принято.

Версии Delphi до XE2 использовали файлы ресурсов в качестве входных и выходных данных в процессе компиляции. Например, в него встроен значок вашего проекта delphi 7 .файл res, который вы "хотите использовать delphi xe2", однако, это проблематично в delphi 7, и теперь полностью невозможно в XE2. Вместо этого вы теперь лечите своих .файл res - это чистый выходной артефакт, такой же, как и исполняемые файлы. Не утруждайте себя проверкой .res файлы в систему управления версиями больше нет, и не пытайтесь делать вид, что это так .файл res-это место, где вы постоянно храните свои значки. Это выходной файл, созданный компилятором автоматически, как и должно было быть всегда.

Если вы современный разработчик, старый способ работы Delphi 7, возможно, раздражал вас (это, конечно, раздражало меня), потому что у вас есть интересные и неразрешимый вопрос о том, что делать для контроля версий: вы проверяете .RES файл, или нет? Были недостатки и в том, и в другом подходе .Файлы RES теперь выводят артефакты только в XE2 - это к лучшему. Так что учись жить с этим.

Теперь, когда XE2 поддерживает иконки не только для ПК, но и для Mac, он должен обрабатывать вещи по-другому, и они очистили это. Это и есть источник проблемы, с которой вы сталкиваетесь .Файл ICO. Я видел точно то же самое. ошибка, и я проигнорировал ее, а просто добавил значок обратно в проект после того, как он был преобразован в противном случае.

Преобразование проекта delphi 7 (.ДНР и ЛНР .cfg) для Delphi XE2 не такая большая проблема, как преобразования между различными уровнями .файлы dproj - каждая версия, начиная с Delphi 2005,2007,2009,2010 и далее, реализовала изменения в формате dproj. Когда возникают проблемы с преобразованием этих проектов, я не делаю того, что предлагает Реми, потому что это пустая трата времени. Что я делаю, так это удаляю DPROJ и позволяю ему преобразовываться из a .только файл dpr.
Но совет Реми начать с нуля имеет много преимуществ, в том числе и то, что вы можете упростить макет вашего проекта.

В любом случае, вот что вы делаете:

  1. игнорировать ошибку.
  2. добавьте значок, чтобы спроецировать себя.
  3. продолжайте весело идти вперед ,и не беспокойтесь об удалении.res file, это намеренно и по уважительным причинам. При необходимости будет создан новый. Имя файла из.ICO-файл на диске будет считываться с помощью содержимого XE2 .dproj файл и скомпилирован в .res файл, как и должно быть.

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

Спасибо всем за Ваш вклад и предложения.

После того, как я отправил свое сообщение, я попытался выполнить следующие шаги для разрешения проблемы .проблема ico и проблема отсутствующей версии / информация о версии переносят проблемы:

Шаг 1 . Отредактировал .dProj файл и удалена ссылка на default_app.связанные записи манифеста под тегом (моя платформа проекта 32 бит) Я удалил все теги под этим, кроме тега, связанного с пространством имен Система.Победа; Данные.Win; Datasnap.Выиграть;Веб.Победа; Мыло.Выиграть На Основе XML.Win;Bde;$(DCC_Namespace)

Без этого мое приложение всегда показывало информацию о версии как 1.0.0.0 и игнорировало все остальное, что я указал.

(я не уверен, что это правильный шаг, но он решил мою проблему с информацией о версии. Для этого может быть более простое/другое решение...)

Шаг 2. извлек ico из старого .файл res, назвал его и добавил Это .ICO файл в проект из проекта Опции. физическое .файл ico находится в папке проектов и будет проверен в системе управления версиями (VSS в моем случае).

Эти два шага привели меня к тому, что мне было нужно, а затем я могу изменить номер версии и скомпилировать проект. С этого момента никаких проблем не возникает.

Это было намного проще, чем полное преобразование / миграция, которую я должен был сделать для моих приложений от D7 до XE2 - преобразование Unicode, миграция настроенных компонентов Raize 5 в Raize 6, Turbo Power, виртуальное дерево Вид, Hypergrid и т. д. и т.д. и т.д... К счастью, я нашел XE2 версии всех этих компонентов.