2009-04-22 15 views
6

Tengo un problema al migrar de Delphi 2006 a Delphi 2009. Un proyecto que utiliza el JVCL se queja de que falta jvconsts.res. El archivo es definitivamente allí. La ruta de búsqueda del proyecto incluye el directorio donde se encuentra el archivo. (Nota: no tengo JVCL en mi camino de búsqueda global para que sea más portátil)Error en Delphi 2009? -> * .res no se encuentran en la ruta de búsqueda del proyecto (funciona en Delphi 2006)

embargo, el archivo debe ser encontrado, como el Delphi Help dice:

" ... las búsquedas de engarce para .res archivos [...] en los directorios especificados en el cuadro de entrada de la ruta de búsqueda en los directorios/Condicionales página del Proyecto | cuadro de diálogo Opciones"

Esto no es un problema JVCL: un programa minimalista muestra esto:

Imagínese esta estructura de directorios:

C:\Test\ResTest.dpr 
C:\Test\Res\Test.res 

Aquí es ResTest.dpr:

program ResTest; 

{$R test.res} // not found even if "c:\Test\Res" is in project search path 

begin 
end. 

Este compila bien en Delphi 2006, pero no en Delphi 2009. Después de buscar he encontrado, de manera decirle a Delphi dónde está el archivo: la ruta de búsqueda gobal o el parámetro -R usando el compilador de línea de comandos.

Mientras escribo esto, me acerco al problema real: En Delphi 2006, el .cfg-archivo incluye las líneas:

-I"c:\Test\Res" 
-U"c:\Test\Res" 
-R"c:\Test\Res" 

Básicamente, copia los valores de la ruta de búsqueda de proyectos en el comando 3 opciones de línea y así se asegura de que el parámetro -R tenga los valores correctos.

En Delphi 2009 (I establece el nivel de detalle de la salida del compilador de "depuración") consigo la línea de comandos resultante de la IDE:

Si el directorio (c: \ Test \ Res) está incluido en el ruta de búsqueda de proyectos:

dcc32.exe --no-config -M -Q -ID:\Sources\Temp\1\Res;"c:\program files\codegear\rad studio\6.0\Lib" -LE"C:\Users\Public\Documents\RAD Studio\6.0\Bpl" -LN"C:\Users\Public\Documents\RAD Studio\6.0\Dcp" -O"c:\program files\codegear\rad studio\6.0\Lib" -R"c:\program files\codegear\rad studio\6.0\Lib" -UD:\Sources\Temp\1\Res;"c:\program files\codegear\rad studio\6.0\Lib" -K00400000 ResTest.dpr 

Si el directorio está incluido en la ruta de búsqueda mundial

dcc32.exe --no-config -M -Q -ID:\Sources\Temp\1\Res;"c:\program files\codegear\rad studio\6.0\Lib";D:\Sources\Temp\1\Res -LE"C:\Users\Public\Documents\RAD Studio\6.0\Bpl" -LN"C:\Users\Public\Documents\RAD Studio\6.0\Dcp" -O"c:\program files\codegear\rad studio\6.0\Lib";D:\Sources\Temp\1\Res -R"c:\program files\codegear\rad studio\6.0\Lib";D:\Sources\Temp\1\Res -UD:\Sources\Temp\1\Res;"c:\program files\codegear\rad studio\6.0\Lib";D:\Sources\Temp\1\Res -K00400000 ResTest.dpr 

Tal vez sea difícil ver aquí: la diferencia es el parámetro -R:

Local Search Path -> -R"c:\program files\codegear\rad studio\6.0\Lib" 
Global Search Path -> -R"c:\program files\codegear\rad studio\6.0\Lib";D:\Sources\Temp\1\Res 

Así que no es de extrañar por qué no funciona. La ruta de búsqueda local no se agrega al parámetro -R en Delphi 2009.

Diría que esto es claramente un error, pero ¿por qué parece que nadie más tiene este problema? Puedo reproducirlo en todas las máquinas que utilizamos. ¿Tal vez el error solo existe en la versión alemana de Delphi 2009?

Respuesta

2

Una solución consiste en poner esto en su código en lugar:

{$R res\test.res} 

que funciona en mi sistema con Delphi 2009, tanto con el IDE y el compilador de línea de comandos.

Tenga en cuenta que estoy de acuerdo en que rompieron la funcionalidad existente, ¿ha agregado un informe a Quality Portal? Si no, por favor hazlo: ttps: //quality.embarcadero.com (este solía ser el motor de búsqueda indexado http://qc.embarcadero.com pero que se ha cerrado; https://quality.embarcadero.com requiere una cuenta gratuita para buscar).

+0

Esto funcionaría con nuestro código, pero tengo que modificar el código de terceros (JVCL) que realmente me gusta evitar. –

+0

Creé una entrada en QualityCentral para este error # 73249 –

+2

Estoy de acuerdo con el hecho de que no desea modificar el código de terceros. Thx para el informe. Acabo de comprobar http://qc.codegear.com/wc/qcmain.aspx?d=73249, modifiqué algunos de los campos del informe y luego lo promocioné para que el equipo de preguntas y respuestas de CodeGear lo vea en su sistema interno –

Cuestiones relacionadas