Подтвердить что ты не робот

Включение файла ресурсов в проект с помощью файла .RC, а не файла .RES

Я помню, как некоторое время назад читал статью или статью, предлагая включить файл ресурсов в проект, ссылаясь на файл .rc вместо уже скомпилированного файла .res, чтобы ресурс был построен как часть процесса сборки проекта.

У меня есть файл glyphs.rc, который я компилирую с помощью команды brcc32 glyphs.rc. В моем файле проекта у меня есть инструкция {$ R Glyphs.res}.

Я хотел бы упростить это, изменив его на что-то вроде

{$R Glyphs.rc} 

но я не уверен в синтаксисе. Когда я пытаюсь использовать {$R Glyphs.rc}, я получаю сообщение об ошибке `

[DCC Error] E2161 Error: RLINK32: Unsupported 16bit resource in file "Glyphs.rc". 

Этот подход возможен с Delphi 2007?

4b9b3361

Ответ 1

Просто добавьте файл rc в свой проект через пункт меню "Проект > Добавить в проект". Это создает строку {$R 'myres.res' 'myres.rc'} из сообщения, которое Ссылки TOndrej.

Ответ 2

Линкером могут обрабатывать только файлы res, но вы можете направить компилятор для вызова компилятора ресурсов и скомпилировать rc script для создания res и ссылку, использующую вариацию директивы $R/$RESOURCE.

В вашем случае (Delphi 2007) вам нужно будет только изменить:

 {$r glyphs.res}

к

 {$r glyphs.res glyphs.rc}

Если это не работает само по себе, попробуйте добавить RC в проект. В разных версиях Delphi вам могут понадобиться одинарные кавычки вокруг имен файлов:

 {$r 'glyphs.res' 'glyphs.rc'}

ПРИМЕЧАНИЕ.. Вам все еще нужно идентифицировать файл res, разница в том, что он может дополнительно идентифицировать файл rc скомпилированный для создания требуемого файла res.

Поддержка этого, похоже, подверглась некоторому возиться и в более поздних версиях добавление RC к проекту не всегда кажется "обнаруженным" проектом до тех пор, пока вы не сохранили, не закрыли и не открыли проект (например, я нашел, что это имеет место в XE4, но может также применяться к другим версиям).

Также в некоторых более поздних версиях просто добавление такого объявления $R 'file.res' 'file.rc' в DPR заставляет диспетчер проекта идентифицировать указанный файл RC как часть проекта, но это не похоже на старые версии. Опять же, часть возиться в этой области кажется.

Я также хотел бы отметить, что XE4 обычно устойчив с точки зрения стабильности, но добавление/удаление файлов RC, казалось, вызывало нарушение доступа при закрытии среды IDE, хотя нормальная стабильность, казалось, восстанавливалась при повторном открытии IDE и проекта, то есть добавление/удаление файлов RC, которые, как представляется, вызывают проблему, а не просто факт наличия файла RC в проекте.

Ответ 4

У меня была та же проблема и я узнал что-то новое.

{$R glyphs.res glyphs.rc}

это код для компиляции glyphs.rc в glyphs.res в pre-build. (Работает с Delphi XE4)

Но этот код ТОЛЬКО работает, если он находится в файле *.dpr! Если вы поместите этот код в файл *.pas, как я сделал в первый раз, он будет просто вести себя как {$ R glyphs.res} и не будет компилировать RC файл. Возможно, это ошибка в Delphi.

Ответ 5

Я не мог избавиться от mainicon в своем приложении, поэтому я сделал файл trapgate.rc, поместив этот файл в каталог src, используя:

 MAINICON icon ".\Icon\MAINICON.ico"
 5012 icon ".\Icon\5012.ico"

Затем использовал BRCC32, чтобы сделать из RC файл RES, сделал сборку, и у меня был правильный значок. вы также можете добавить туда больше значков и переключить их, поэтому я добавил строку в файле makeres.bat выглядит следующим образом:

brcc32 folders.rc -fofolders.res
brcc32 main.rc -fomain.res
brcc32 xOutline.rc -foxOutline.res
brcc32 xSpin.rc -foxSpin.res
brcc32 credits.rc -focredits.res
brcc32 licence.rc -folicence.res
brcc32 trapgate.rc -fotrapgate.res <-- this is my icon file

Итак, что бы вы ни делали, даже если вы меняете значок в папке.\значки, конечно, убедитесь, что у него есть правильное имя, например mainicon.ico и 5012.ico

Надеюсь, что это помогло, кто не может изменить значок в самой Delphi 7.

Ответ 6

Я попытался сделать это в Delphi 2007, и это не сработало. Я положил строку,

"{$ R glyphs.res glyphs.rc}"

в файле проекта прямо над строкой "{$ R *.res}", которую IDE помещает туда, но когда я добавил файл rc с помощью IDE, он помещал его выше строки "использует", а затем работал.