Códigos de retorno de línea de comandos IDE de Delphi 5
-
05-07-2019 - |
Pregunta
Estoy intentando automatizar algunas compilaciones de Delphi 5 heredadas con una secuencia de comandos de MSBuild, y estoy teniendo problemas para capturar errores. Pensando que había algún problema con la aprobación de MSBuild, también probé un archivo por lotes y todavía recibo pasadas anteriores (0) cuando la compilación debería fallar (1). % 2 es la ruta a delphi y% 3 es el nombre del proyecto.
REM delphi_ide_build.bat
@ECHO OFF
"%1 %2\Bin\delphi32.exe" %3.dpr -b
REM BCB5 returns 0 if build succeeds, 1 if build fails
IF ERRORLEVEL 1 GOTO FAIL
IF ERRORLEVEL 0 GOTO PASS
:FAIL
ECHO An Error Occured in Build - Showing Log
ECHO ---------------------------------------
type %3.err
EXIT 1
:PASS
ECHO The Build Passed - Showing Log
ECHO ------------------------------
type %3.err
EXIT 0
Según la ayuda en línea:
El nivel de error se establece en 0 para construcciones exitosas y 1 para fallidos compilaciones.
Actualmente, mi proyecto falla (visible en el archivo de registro) pero mi archivo por lotes se ejecuta como un PASS.
[Error grave] MyFile.pas (43): Archivo no encontrado: 'aa.dcu'
¿Se trata de un error en Delphi 5 o me falta algo?
Texto de ayuda IDE completo para la opción -B en delphi32.exe:
AutoBuild. Debe ser utilizado con el opción de nombre de archivo. Cuando se especifique, el proyecto o grupo de proyecto se construye automáticamente cuando se inicia el IDE. Alguna Consejos, errores o advertencias son entonces guardado en un archivo. Luego sale el IDE. Esto facilita hacer compilaciones por lotes. modo de un archivo por lotes. El error El nivel se establece en 0 para tener éxito compilaciones y 1 para compilaciones fallidas. Por por defecto, el archivo de salida tiene la misma nombre como el nombre de archivo especificado con la extensión del archivo cambió a .err. Esto puede ser anulado usando la o opcion
Solución
La única ayuda se refiere al compilador de línea de comandos dcc32.exe y no al IDE.
Reemplazar el delphi32.exe por dcc32.exe debería resolver su problema.