2009-08-19 32 views
15

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 compilado .res archivo para que el recurso se construya como parte del proceso de compilación del proyecto.Incluyendo archivo de recursos en un proyecto por archivo .RC en lugar de archivo .RES

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

me gustaría simplificar esta cambiando a algo así como

{$R Glyphs.rc} 

pero estoy seguro de la sintaxis. Cuando intento usar {$R Glyphs.rc} consigo un error `

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

¿Es este enfoque es posible con Delphi 2007?

Respuesta

23

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

6

El enlazador sólo puede manejar res archivos, pero se puede dirigir el compilador para invocar el compilador de recursos y compilar un guión rc para producen un res archivo y vincular que, utilizando una variación de la $ R/$ RECURSO directiva.

En su caso (Delphi 2007) lo que necesitará único cambio:

{$r glyphs.res} 

a

{$r glyphs.res glyphs.rc} 

Si esto no funciona por sí mismo, trate de añadir el RC con el proyecto. En diferentes versiones de Delphi es posible que tenga comillas simples en torno a los nombres de archivo:

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

NOTA: Haces todavía necesidad de identificar un res archivo, la diferencia está en la capacidad de identificar, además, la rc archivo que se compilará para producir el archivo res requerido en primer lugar.

El soporte para esto parece haber estado sujeto a algunas modificaciones y en versiones más recientes agregar el RC al proyecto no siempre parece ser "detectado" por el proyecto hasta después de haberlo guardado, cerrado y reabierto el proyecto (por ejemplo, encontré que este es el caso en XE4, pero también puede aplicarse a otras versiones).

También en algunas versiones más recientes, simplemente agregar una declaración $R 'file.res' 'file.rc' al DPR hace que el Project Manager identifique el archivo RC referenciado como parte del proyecto, pero este no parece ser el caso en versiones anteriores. De nuevo, parece ser parte de los pequeños retoques en esta área.

También me gustaría destacar que el XE4 suele ser sólido en términos de estabilidad, pero añadir/eliminar archivos RC pareció desencadenar una infracción de acceso al cerrar el IDE, aunque la estabilidad pareció restablecerse al volver a abrir el IDE. proyecto. es decir, está agregando/eliminando archivos RC que parece causar un problema, no simplemente el hecho de tener el archivo RC en el proyecto.

+0

Jolyon, creo que esto dejó de funcionar hace algunas versiones (¿presumiblemente con el cambio a MSBuild?). Ya no funciona en mi copia de Delphi XE2 en ningún caso. –

+0

Curioso: parece que funciona bien en mi XE2. – Deltics

+0

El mero cambio de la directiva $ R no funciona en XE2. El archivo .rc debe agregarse al proyecto con Proyecto | Agregar al proyecto. –

2

Tuve el mismo problema y descubrí algo nuevo.

{$R glyphs.res glyphs.rc} 

este es el código para compilar glyphs.rc a glyphs.res en la preconstrucción. (Funciona con Delphi XE4)

¡Pero este código SÓLO 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.

+0

AFAIR tampoco funciona en dpk (paquetes). Sería bueno si el compilador al menos advirtió sobre esto. –

0

no podía deshacerse de la mainicon en mi solicitud, así que hice un archivo trapgate.rc poner ese archivo en el directorio src, utilizado:

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

luego se usa para hacer BRCC32 desde el RC una RES, hice la compilación y tuve el ícono correcto. también puede poner más iconos y cambiar allí es por eso que he añadido la línea en makeres.bat se parece a esto:

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 

Así que cualquier cosa que hagas, incluso si cambia el icono en la carpeta .. \ icons por supuesto, asegúrese de que tenga el nombre correcto, como mainicon.ico y 5012.ico

Espero que haya sido de ayuda para quién no puede cambiar el icono en Delphi 7.

0

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

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

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

Cuestiones relacionadas