delphi build-process embedded-resource

delphi - Incluyendo el archivo de recursos en un proyecto por un archivo.RC en lugar de un archivo.RES



build-process embedded-resource (6)

Recuerdo haber leído un artículo o publicación en algún lugar hace años que sugería incluir un archivo de recursos en un proyecto haciendo referencia al archivo .rc en lugar de un archivo .res ya compilado, de modo que el recurso se genere como parte del proceso de compilación del proyecto.

Tengo un archivo glyphs.rc que compilo actualmente usando el comando brcc32 glyphs.rc. En mi archivo de proyecto tengo la declaración {$ R Glyphs.res}.

Me gustaría simplificar esto cambiándolo a algo como

{$R Glyphs.rc}

Pero no estoy seguro de la sintaxis. Cuando intento usar {$R Glyphs.rc} me sale un error `

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

¿Es este enfoque posible con Delphi 2007?


El vinculador solo puede manejar archivos de resolución , pero puede indicar al compilador que invoque al compilador de recursos y compile un script rc para generar un archivo de resolución y un enlace que utilice una variación de la directiva $ R / $ RESOURCE .

En su caso (Delphi 2007) solo necesita cambiar:

{$r glyphs.res}

a

{$r glyphs.res glyphs.rc}

Si esto no funciona por sí solo, intente agregar el RC al proyecto. En diferentes versiones de Delphi es posible que necesite comillas simples alrededor de los nombres de archivo:

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

NOTA: Aún necesita identificar un archivo de resolución , la diferencia está en poder identificar adicionalmente el archivo rc que se va a compilar para producir el archivo de resolución requerido en primer lugar.

El soporte para esto parece haber estado sujeto a algunos retoques y en versiones más recientes agregar el RC al proyecto no siempre parece ser "detectado" por el proyecto hasta después de que haya guardado, cerrado y vuelto a abrir el proyecto (por ejemplo, Descubrí que este es el caso en XE4, pero también se puede aplicar a otras versiones).

También en algunas versiones más recientes, el simple hecho de agregar $R ''file.res'' ''file.rc'' declaración $R ''file.res'' ''file.rc'' al DPR hace que el Project Manager identifique el archivo RC al que se hace referencia como parte del proyecto, pero esto no parece ser El caso en versiones anteriores. Una vez más, parte de los retoques en esta área parece.

También observaría que el XE4 es generalmente sólido en términos de estabilidad, pero agregar / eliminar archivos RC pareció desencadenar una infracción de acceso al cerrar el IDE, aunque la estabilidad normal pareció restablecerse al volver a abrir el IDE y el proyecto. es decir, es agregar / eliminar archivos RC lo que parece causar un problema, no simplemente el hecho de tener el archivo RC en el proyecto.

ACTUALIZACIÓN: En las versiones recientes de Delphi (Delphi 10.2 Berlin) debe incluir recursos personalizados antes de la línea {$R *.res} , de lo contrario no se compilarán automáticamente.


Intenté hacer esto en Delphi 2007 y no funcionó. Yo había puesto la línea,

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

en mi archivo de proyecto, justo encima de la línea "{$ R * .res}" que el IDE pone allí, pero cuando agregué el archivo rc usando el IDE, lo puso sobre la línea "usa" y luego funcionó.


No pude deshacerme del mainicon en mi aplicación, así que hice un archivo trapgate.rc y puse ese archivo en el directorio src, usado:

MAINICON icon "./Icon/MAINICON.ico" 5012 icon "./Icon/5012.ico"

Luego usé BRCC32 para hacer del RC un archivo RES, hice la compilación y tuve el ícono correcto. También puedes poner más íconos allí y cambiar por eso agregué la línea en makeres.bat se ve así:

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

Entonces, haga lo que haga, incluso si cambia el ícono en la carpeta ... / íconos, por supuesto, asegúrese de que tenga el nombre correcto como mainicon.ico y 5012.ico

Espero que haya ayudado a quien no puede cambiar el icono en Delphi 7 en sí.


Simplemente agregue el archivo rc a su proyecto a través del elemento de menú "Proyecto> Agregar a proyecto". Esto crea la línea {$R ''myres.res'' ''myres.rc''} partir de la publicación a la que TOndrej enlaza .


Tuve el mismo problema y descubrí algo nuevo.

{$R glyphs.res glyphs.rc}

Este es el código para compilar glyphs.rc en glyphs.res en la compilación previa. (Funciona con Delphi XE4)

¡Pero este código SOLO funciona si está en el archivo * .dpr! Si coloca este código, en un archivo * .pas como lo hice la primera vez, simplemente se comportará como {$ R glyphs.res} y no compilará el archivo RC. Tal vez esto es un error en Delphi.