2010-12-27 10 views
3

Я хочу использовать точку (.) В качестве записи ресурсов в файлах RC для моего проекта Delphi. Тем не менее, BRCC32.exe от Delphi не разрешает точку (.) В именах ресурсов. С Delphi 2010, можно указать "Компилятор ресурсов для использования" вВключить файл по-разному, используя RC.EXE или BRCC32.EXE для создания файлов * .rc.

Project | Option | Resource Compiler 

переключиться на RC.exe (Windows SDK Resource Compiler), которые поддерживают точку в обозначении.

Использование RC.exe в качестве компилятора ресурсов для определения точек. Я хочу. Однако я столкнулся с проблемой, связанной с #include в файле rc.

У меня есть app.db.excludes.rc файл выглядит следующим образом:

#include "../../../../core/resource/db/excludes/system.db.excludes.rc" 

HR_BRANCH_DSC  8000 "HR.BRANCH.DSC.xml" 
HR_CALENDAR_DSC 8000 "HR.CALENDAR.DSC.xml" 
HR_CATEGORY_DSC 8000 "HR.CATEGORY.DSC.xml" 

И system.db.excludes.rc файл:

#include "../../system.h" 

SYSTEM_GROUPS_DSC 8000 "SYSTEM.GROUPS.DSC.xml" 
SYSTEM_SCRIPT_DSC 8000 "SYSTEM.SCRIPT.DSC.xml" 
SYSTEM_USER_DSC  8000 "SYSTEM.USER.DSC.xml" 

Compile выходы проекта Delphi:

[BRCC32 Error] payroll.db.excludes.rc(3): file not found: SYSTEM.GROUPS.DSC.xml 
[BRCC32 Error] payroll.db.excludes.rc(4): file not found: SYSTEM.SCRIPT.DSC.xml 
[BRCC32 Error] payroll.db.excludes.rc(5): file not found: SYSTEM.USER.DSC.xml 

Эта проблема возникает, если с помощью RC.exe. Он работает без проблем, если я использую BRCC32.exe.

Эта проблема возникает из-за проблем с app.db.excludes.rc и system.db.excludes.rc не сохраняется в одной папке.

Если изменить system.db.excludes.rc к

#include "../../system.h" 

SYSTEM_GROUPS_DSC 8000 "../../../../core/resource/db/excludes/SYSTEM.GROUPS.DSC.xml" 
SYSTEM_SCRIPT_DSC 8000 "../../../../core/resource/db/excludes/SYSTEM.SCRIPT.DSC.xml" 
SYSTEM_USER_DSC  8000 "../../../../core/resource/db/excludes/SYSTEM.USER.DSC.xml" 

RC.exe будет успешно компилировать.

Есть ли у кого-нибудь идеи, как заставить RC.exe работать как BRCC32.EXE при интерпретации включенных файлов, как указано выше?

+0

Интересно, что BRCC32 работает ...если это не относится к текущему каталогу –

ответ

0

Вместо того, чтобы использовать #include, чтобы встроить файл гс:

#include "../../../../core/resource/db/excludes/system.db.excludes.rc" 

я извлекаю использование #include и добавить "system.db.excludes.rc" в моем проекте Delphi (.dproj).

Модифицированная "app.db.excludes.rc" является:

HR_BRANCH_DSC  8000 "HR.BRANCH.DSC.xml" 
HR_CALENDAR_DSC 8000 "HR.CALENDAR.DSC.xml" 
HR_CATEGORY_DSC 8000 "HR.CATEGORY.DSC.xml" 

И мой Delphi файл пакета (.dpk) выглядит следующим образом:

package resource.db; 

{$R *.res} 
{$R 'payroll.db.excludes.res'} 
{$ALIGN 8} 
{$ASSERTIONS ON} 
{$BOOLEVAL OFF} 
{$DEBUGINFO ON} 
{$EXTENDEDSYNTAX ON} 
{$IMPORTEDDATA ON} 
{$IOCHECKS ON} 
.... 

Запись ресурс должен добавлен в .dpk файл вручную:

{$R 'payroll.db.excludes.res'} 

Этот подход работает как для BRCC32.exe и CGRC.exe/RC.exe.

3

Вы можете попробовать /I вариант RC, чтобы указать каталог, в котором живут ваши XML-файлы. Вам нужно будет запустить RC в качестве предварительного действия, чтобы получить такой контроль над средой выполнения.

+0

Говоря об управлении средой выполнения, вы можете просто установить переменную среды INCLUDE, чтобы указать нужный каталог, и вам больше не понадобится специальное пред-сборку; выполнение по умолчанию 'rc' будет работать. –

 Смежные вопросы

  • Нет связанных вопросов^_^