Changeset: 359 v1.19.26
- Mejora: Quitar los asteriscos que pudieran haber entre los ENDPROC y PROCEDURE, analizados en ese orden, para regenerar binario sin errores. (Daniel Sánchez) - Mejora: Agregar opción de configuración l_DropNullCharsFromCode, activada por defecto, para permitir quitar los NULLs del código fuente (Matt Slay) - Bug Fix cfg: ExtraBackupLevel no se tiene en cuenta cuando se usa multi-configuración
This commit is contained in:
@@ -2,8 +2,8 @@ Lparameters toUpdateInfo
|
|||||||
|
|
||||||
Local lcNote
|
Local lcNote
|
||||||
With toUpdateInfo
|
With toUpdateInfo
|
||||||
.VersionNumber = 'v1.19.25'
|
.VersionNumber = 'v1.19.26'
|
||||||
.VersionDate = Date(2014,06,25)
|
.VersionDate = Date(2014,07,06)
|
||||||
.SourceFileUrl = 'http://vfpxrepository.com/dl/thorupdate/Projects/FoxBin2Prg/FoxBin2Prg.Zip'
|
.SourceFileUrl = 'http://vfpxrepository.com/dl/thorupdate/Projects/FoxBin2Prg/FoxBin2Prg.Zip'
|
||||||
|
|
||||||
.Link = 'http://vfpx.codeplex.com/wikipage?title=FoxBin2PRG'
|
.Link = 'http://vfpx.codeplex.com/wikipage?title=FoxBin2PRG'
|
||||||
@@ -17,6 +17,11 @@ Demo video using FoxBin2Prg with PlasticSCM: http://youtu.be/sE4wQ50Itqg
|
|||||||
|
|
||||||
Change History -------------------------------------------------------------
|
Change History -------------------------------------------------------------
|
||||||
|
|
||||||
|
2014/07/06 v1.19.26
|
||||||
|
- Feature: Drop asterisks between "ENDPROC" and "PROCEDURE", analyzed in that exact order, to regenerate binary without errors. (Daniel S<>nchez)
|
||||||
|
- Feature: Add the l_DropNullCharsFromCode configuration option, enabled by default, to allow droping NULLs from source code. (Matt Slay)
|
||||||
|
- Bug Fix cfg: ExtraBackupLevel does not work when using multi-configuration
|
||||||
|
|
||||||
2014/06/25 v1.19.25
|
2014/06/25 v1.19.25
|
||||||
- When processing one or multiple files with vbs scripts, show a message indicating the status of the generation, and show the error log if any error occurs (Pedro Guti<74>rrez M.)
|
- When processing one or multiple files with vbs scripts, show a message indicating the status of the generation, and show the error log if any error occurs (Pedro Guti<74>rrez M.)
|
||||||
- Code cleaning and normalization
|
- Code cleaning and normalization
|
||||||
|
|||||||
39
TESTS/DATOS_READONLY/f_nullchars_incode.sc2
Normal file
39
TESTS/DATOS_READONLY/f_nullchars_incode.sc2
Normal file
@@ -0,0 +1,39 @@
|
|||||||
|
*--------------------------------------------------------------------------------------------------------------------------------------------------------
|
||||||
|
* (ES) AUTOGENERADO - <20><>ATENCI<43>N!! - <20><>NO PENSADO PARA EJECUTAR!! USAR SOLAMENTE PARA INTEGRAR CAMBIOS Y ALMACENAR CON HERRAMIENTAS SCM!!
|
||||||
|
* (EN) AUTOGENERATED - ATTENTION!! - NOT INTENDED FOR EXECUTION!! USE ONLY FOR MERGING CHANGES AND STORING WITH SCM TOOLS!!
|
||||||
|
*--------------------------------------------------------------------------------------------------------------------------------------------------------
|
||||||
|
*< FOXBIN2PRG: Version="1.19" SourceFile="f_nullchars_incode.scx" /> (Solo para binarios VFP 9 / Only for VFP 9 binaries)
|
||||||
|
*
|
||||||
|
*
|
||||||
|
DEFINE CLASS dataenvironment AS dataenvironment
|
||||||
|
*< CLASSDATA: Baseclass="dataenvironment" Timestamp="" Scale="" Uniqueid="" ClassIcon="1" />
|
||||||
|
|
||||||
|
DataSource = .NULL.
|
||||||
|
Height = 0
|
||||||
|
Left = 0
|
||||||
|
Name = "Dataenvironment"
|
||||||
|
Top = 0
|
||||||
|
Width = 0
|
||||||
|
|
||||||
|
ENDDEFINE
|
||||||
|
|
||||||
|
DEFINE CLASS form1 AS form
|
||||||
|
*< CLASSDATA: Baseclass="form" Timestamp="" Scale="" Uniqueid="" />
|
||||||
|
|
||||||
|
Caption = "Form1"
|
||||||
|
DoCreate = .T.
|
||||||
|
Height = 79
|
||||||
|
Left = 0
|
||||||
|
Name = "Form1"
|
||||||
|
Top = 0
|
||||||
|
Width = 394
|
||||||
|
|
||||||
|
PROCEDURE Click
|
||||||
|
LPARAMETERS p1, p2, p3
|
||||||
|
ENDPROC
|
||||||
|
|
||||||
|
PROCEDURE Load
|
||||||
|
LPARAMETERS p1, p2, p3
|
||||||
|
ENDPROC
|
||||||
|
|
||||||
|
ENDDEFINE
|
||||||
BIN
TESTS/DATOS_READONLY/f_nullchars_incode.sct
Normal file
BIN
TESTS/DATOS_READONLY/f_nullchars_incode.sct
Normal file
Binary file not shown.
BIN
TESTS/DATOS_READONLY/f_nullchars_incode.scx
Normal file
BIN
TESTS/DATOS_READONLY/f_nullchars_incode.scx
Normal file
Binary file not shown.
@@ -128,10 +128,12 @@ DEFINE CLASS ut__foxbin2prg AS FxuTestCase OF FxuTestCase.prg
|
|||||||
, laProtected(1), lnProtected_Count, laProtected_Esperado(1), lnProtected_Count_Esperado ;
|
, laProtected(1), lnProtected_Count, laProtected_Esperado(1), lnProtected_Count_Esperado ;
|
||||||
, laMethods(1,2), lnMethods_Count, laMethods_Esperado(1,2), lnMethods_Count_Esperado, lcExtraData
|
, laMethods(1,2), lnMethods_Count, laMethods_Esperado(1,2), lnMethods_Count_Esperado, lcExtraData
|
||||||
LOCAL loObj AS c_conversor_bin_a_prg OF "FOXBIN2PRG.PRG"
|
LOCAL loObj AS c_conversor_bin_a_prg OF "FOXBIN2PRG.PRG"
|
||||||
|
LOCAL loFoxBin2Prg AS c_foxbin2prg OF "FOXBIN2PRG.PRG"
|
||||||
|
|
||||||
*-- Algunos ajustes para mejor visualizaci<63>n de caracteres especiales
|
*-- Algunos ajustes para mejor visualizaci<63>n de caracteres especiales
|
||||||
*tcPropValue = oFXU_LIB.mejorarPresentacionCaracteresEspeciales( tcPropValue )
|
*tcPropValue = oFXU_LIB.mejorarPresentacionCaracteresEspeciales( tcPropValue )
|
||||||
loObj = NEWOBJECT("c_conversor_bin_a_prg", "FOXBIN2PRG.PRG")
|
loFoxBin2Prg = NEWOBJECT("c_foxbin2prg", "FOXBIN2PRG.PRG")
|
||||||
|
loObj = NEWOBJECT("c_conversor_bin_a_prg", "FOXBIN2PRG.PRG")
|
||||||
|
|
||||||
*-- Reserved3
|
*-- Reserved3
|
||||||
loObj.get_PropsAndCommentsFrom_RESERVED3( toReg.RESERVED3, .F., @laPropsAndComments, @lnPropsAndComments_Count, '' )
|
loObj.get_PropsAndCommentsFrom_RESERVED3( toReg.RESERVED3, .F., @laPropsAndComments, @lnPropsAndComments_Count, '' )
|
||||||
@@ -146,8 +148,8 @@ DEFINE CLASS ut__foxbin2prg AS FxuTestCase OF FxuTestCase.prg
|
|||||||
loObj.get_PropsFrom_PROTECTED( toReg_Esperado.PROTECTED, .F., @laProtected_Esperado, @lnProtected_Count_Esperado, '' )
|
loObj.get_PropsFrom_PROTECTED( toReg_Esperado.PROTECTED, .F., @laProtected_Esperado, @lnProtected_Count_Esperado, '' )
|
||||||
|
|
||||||
*-- Methods
|
*-- Methods
|
||||||
loObj.get_ADD_OBJECT_METHODS( toReg, toReg, '', @laMethods, '', @lnMethods_Count, '', 0, '', 0 )
|
loObj.get_ADD_OBJECT_METHODS( toReg, toReg, '', @laMethods, '', @lnMethods_Count, '', 0, '', 0, loFoxBin2Prg )
|
||||||
loObj.get_ADD_OBJECT_METHODS( toReg_Esperado, toReg_Esperado, '', @laMethods_Esperado, '', @lnMethods_Count_Esperado, '', 0, '', 0 )
|
loObj.get_ADD_OBJECT_METHODS( toReg_Esperado, toReg_Esperado, '', @laMethods_Esperado, '', @lnMethods_Count_Esperado, '', 0, '', 0, loFoxBin2Prg )
|
||||||
lcExtraData = tcParent + '.' + tcObjName + ' (' + tcClass + ')'
|
lcExtraData = tcParent + '.' + tcObjName + ' (' + tcClass + ')'
|
||||||
|
|
||||||
|
|
||||||
@@ -257,6 +259,9 @@ DEFINE CLASS ut__foxbin2prg AS FxuTestCase OF FxuTestCase.prg
|
|||||||
THIS.asserttrue( ASCAN( laMethods, laMethods_Esperado(I,1), 1, -1, 1, 0+2+4) > 0 ;
|
THIS.asserttrue( ASCAN( laMethods, laMethods_Esperado(I,1), 1, -1, 1, 0+2+4) > 0 ;
|
||||||
, ' Comprobaci<63>n de que existe el Method "' + TRANSFORM(laMethods_Esperado(I,1)) + '"' + " para " + lcExtraData )
|
, ' Comprobaci<63>n de que existe el Method "' + TRANSFORM(laMethods_Esperado(I,1)) + '"' + " para " + lcExtraData )
|
||||||
ENDFOR
|
ENDFOR
|
||||||
|
|
||||||
|
loFoxBin2Prg = NULL
|
||||||
|
RELEASE loFoxBin2Prg
|
||||||
|
|
||||||
ENDCASE
|
ENDCASE
|
||||||
|
|
||||||
@@ -438,7 +443,7 @@ DEFINE CLASS ut__foxbin2prg AS FxuTestCase OF FxuTestCase.prg
|
|||||||
*******************************************************************************************************************************************
|
*******************************************************************************************************************************************
|
||||||
FUNCTION Deberia_Ejecutar_FOXBIN2PRG_ParaElForm_FB2P_FRM_1_SCX_YValidarLosCamposDelRegistro
|
FUNCTION Deberia_Ejecutar_FOXBIN2PRG_ParaElForm_FB2P_FRM_1_SCX_YValidarLosCamposDelRegistro
|
||||||
LOCAL lnCodError, lnCodError_Esperado ;
|
LOCAL lnCodError, lnCodError_Esperado ;
|
||||||
, lc_File, lc_InputFile, lc_OutputFile, lcParent, lcClass, lcObjName, loReg_Esperado, loReg, lcTipoBinario ;
|
, lc_File, lc_InputFile, lc_OutputFile, lc_OutputFile2, lcParent, lcClass, lcObjName, loReg_Esperado, loReg, lcTipoBinario ;
|
||||||
, loModulo AS CL_CLASE OF "FOXBIN2PRG.PRG" ;
|
, loModulo AS CL_CLASE OF "FOXBIN2PRG.PRG" ;
|
||||||
, loCnv AS c_foxbin2prg OF "FOXBIN2PRG.PRG" ;
|
, loCnv AS c_foxbin2prg OF "FOXBIN2PRG.PRG" ;
|
||||||
, loEx AS EXCEPTION
|
, loEx AS EXCEPTION
|
||||||
@@ -457,16 +462,17 @@ DEFINE CLASS ut__foxbin2prg AS FxuTestCase OF FxuTestCase.prg
|
|||||||
*-- DATOS DE ENTRADA
|
*-- DATOS DE ENTRADA
|
||||||
STORE 0 TO lnCodError
|
STORE 0 TO lnCodError
|
||||||
lc_File = 'FB2P_FRM_1.SCX'
|
lc_File = 'FB2P_FRM_1.SCX'
|
||||||
lc_InputFile = FORCEPATH( lc_File, 'TESTS\DATOS_READONLY' )
|
lc_InputFile = FORCEPATH( lc_File, oFXU_LIB.cPathDatosReadOnly )
|
||||||
lc_OutputFile = FORCEPATH( lc_File, 'TESTS\DATOS_TEST' )
|
lc_OutputFile = FORCEPATH( lc_File, oFXU_LIB.cPathDatosTest )
|
||||||
|
lc_OutputFile2 = FORCEEXT(lc_OutputFile, LEFT( JUSTEXT(lc_File),2 ) + '2' )
|
||||||
lcTipoBinario = UPPER( JUSTEXT( lc_OutputFile ) )
|
lcTipoBinario = UPPER( JUSTEXT( lc_OutputFile ) )
|
||||||
loCnv.l_NoTimestamps = .F.
|
loCnv.l_NoTimestamps = .F.
|
||||||
loCnv.l_ClearUniqueID = .F.
|
loCnv.l_ClearUniqueID = .F.
|
||||||
|
|
||||||
oFXU_LIB.copiarArchivosParaTest( FORCEEXT( lc_File, LEFT( JUSTEXT(lc_File),2 ) + '?' ) )
|
oFXU_LIB.copiarArchivosParaTest( FORCEEXT( lc_File, LEFT( JUSTEXT(lc_File),2 ) + '?' ) )
|
||||||
|
|
||||||
loCnv.Convertir( lc_OutputFile, .F., .F., .T. )
|
loCnv.Ejecutar( lc_OutputFile, '', '', '', '', '', '', '', '', .T. )
|
||||||
loCnv.Convertir( FORCEEXT(lc_OutputFile, LEFT( JUSTEXT(lc_File),2 ) + '2' ), .F., .F., .T. )
|
loCnv.Ejecutar( lc_OutputFile2, '', '', '', '', '', '', '', '', .T. )
|
||||||
|
|
||||||
SELECT 0
|
SELECT 0
|
||||||
USE (lc_InputFile) SHARED AGAIN NOUPDATE ALIAS ARCHIVOBIN_IN
|
USE (lc_InputFile) SHARED AGAIN NOUPDATE ALIAS ARCHIVOBIN_IN
|
||||||
@@ -1272,6 +1278,120 @@ DEFINE CLASS ut__foxbin2prg AS FxuTestCase OF FxuTestCase.prg
|
|||||||
ENDFUNC
|
ENDFUNC
|
||||||
|
|
||||||
|
|
||||||
|
*******************************************************************************************************************************************
|
||||||
|
FUNCTION Deberia_GenerarUnArchivo_SC2_DesdeUnBinarioQueContieneNullsEnElCodigo_SinLosNulls
|
||||||
|
LOCAL lnCodError, lnCodError_Esperado ;
|
||||||
|
, lc_File, lc_OutputFile, lc_OutputFileTx2, lc_OutputFileBak, lcExt2, lcFileName, lnNulls, lnNulls_Esperados ;
|
||||||
|
, lcParent, lcClass, lcObjName, loReg_Esperado ;
|
||||||
|
, loCtl AS f_optiongroup OF "TESTS\DATOS_READONLY\LIB_CONTROLES.VCX" ;
|
||||||
|
, loCnv AS c_foxbin2prg OF "FOXBIN2PRG.PRG" ;
|
||||||
|
, loEx AS EXCEPTION
|
||||||
|
#IF .F.
|
||||||
|
PUBLIC oFXU_LIB AS CL_FXU_CONFIG OF 'TESTS\fxu_lib_objetos_y_funciones_de_soporte.PRG'
|
||||||
|
#ENDIF
|
||||||
|
|
||||||
|
TRY
|
||||||
|
loEx = NULL
|
||||||
|
loCnv = NEWOBJECT("c_foxbin2prg", "FOXBIN2PRG.PRG")
|
||||||
|
loCnv.EvaluarConfiguracion( '', '', '1', '1', '1', '4', '1', '0' )
|
||||||
|
*loCnv.l_DropNullCharsFromCode = .T.
|
||||||
|
*loCnv.l_Test = .T.
|
||||||
|
|
||||||
|
|
||||||
|
*-- DATOS DE ENTRADA
|
||||||
|
STORE 0 TO lnCodError, lnCodError_Esperado, lnNulls, lnNulls_Esperados
|
||||||
|
lcFileName = 'f_nullchars_incode.scx'
|
||||||
|
lnNulls_Esperados = 0
|
||||||
|
|
||||||
|
*-- Copio la librer<65>a en DATOS_TEST
|
||||||
|
lc_File = UPPER(lcFileName)
|
||||||
|
lcExt2 = loCnv.Get_Ext2FromExt( JUSTEXT( lc_File ) )
|
||||||
|
lc_OutputFile = FORCEPATH( lc_File, oFXU_LIB.cPathDatosTest )
|
||||||
|
lc_OutputFileTx2 = FORCEEXT( FORCEPATH( lc_File, oFXU_LIB.cPathDatosTest ), lcExt2 )
|
||||||
|
lc_OutputFileBak = lc_OutputFileTx2 + '.bak'
|
||||||
|
|
||||||
|
oFXU_LIB.copiarArchivosParaTest( FORCEEXT( lc_File, LEFT( JUSTEXT(lc_File),2 ) + '?' ) )
|
||||||
|
COPY FILE (lc_OutputFileTx2) TO (lc_OutputFileBak)
|
||||||
|
|
||||||
|
*-- Genero TX2
|
||||||
|
loCnv.Ejecutar( lc_OutputFile, .F., .F., .F., '1', '0', '1', '', '', .T., '', SYS(5)+CURDIR() )
|
||||||
|
lnNulls = OCCURS( CHR(0), FILETOSTR( lc_OutputFileTx2 ) )
|
||||||
|
|
||||||
|
*-- Comparo resultados
|
||||||
|
THIS.messageout( "Se comprueba si el archivo texto generado contiene NULLs" )
|
||||||
|
THIS.messageout( "NULLs esperados: " + TRANSFORM(lnNulls_Esperados) )
|
||||||
|
THIS.messageout( "NULLs encontrados: " + TRANSFORM(lnNulls) )
|
||||||
|
THIS.assertequals( lnNulls_Esperados, lnNulls, "COMPROBACI<43>N THE NULLS" )
|
||||||
|
|
||||||
|
|
||||||
|
CATCH TO loEx
|
||||||
|
THIS.Evaluate_results( loEx, lnCodError_Esperado, lc_OutputFile, lcParent, lcClass, lcObjName, loReg_Esperado )
|
||||||
|
|
||||||
|
FINALLY
|
||||||
|
STORE NULL TO loCnv, loCtl
|
||||||
|
RELEASE loCnv, loCtl
|
||||||
|
ENDTRY
|
||||||
|
|
||||||
|
ENDFUNC
|
||||||
|
|
||||||
|
|
||||||
|
*******************************************************************************************************************************************
|
||||||
|
FUNCTION Deberia_GenerarUnArchivo_SC2_DesdeUnBinarioQueContieneNullsEnElCodigo_ConLosNulls
|
||||||
|
LOCAL lnCodError, lnCodError_Esperado ;
|
||||||
|
, lc_File, lc_OutputFile, lc_OutputFileTx2, lc_OutputFileBak, lcExt2, lcFileName, lnNulls, lnNulls_Esperados ;
|
||||||
|
, lcParent, lcClass, lcObjName, loReg_Esperado ;
|
||||||
|
, loCtl AS f_optiongroup OF "TESTS\DATOS_READONLY\LIB_CONTROLES.VCX" ;
|
||||||
|
, loCnv AS c_foxbin2prg OF "FOXBIN2PRG.PRG" ;
|
||||||
|
, loEx AS EXCEPTION
|
||||||
|
#IF .F.
|
||||||
|
PUBLIC oFXU_LIB AS CL_FXU_CONFIG OF 'TESTS\fxu_lib_objetos_y_funciones_de_soporte.PRG'
|
||||||
|
#ENDIF
|
||||||
|
|
||||||
|
TRY
|
||||||
|
loEx = NULL
|
||||||
|
loCnv = NEWOBJECT("c_foxbin2prg", "FOXBIN2PRG.PRG")
|
||||||
|
loCnv.EvaluarConfiguracion( '', '', '1', '1', '1', '4', '1', '0' )
|
||||||
|
loCnv.l_DropNullCharsFromCode = .F.
|
||||||
|
*loCnv.l_Test = .T.
|
||||||
|
|
||||||
|
|
||||||
|
*-- DATOS DE ENTRADA
|
||||||
|
STORE 0 TO lnCodError, lnCodError_Esperado, lnNulls, lnNulls_Esperados
|
||||||
|
lcFileName = 'f_nullchars_incode.scx'
|
||||||
|
lnNulls_Esperados = 2
|
||||||
|
|
||||||
|
*-- Copio la librer<65>a en DATOS_TEST
|
||||||
|
lc_File = UPPER(lcFileName)
|
||||||
|
lcExt2 = loCnv.Get_Ext2FromExt( JUSTEXT( lc_File ) )
|
||||||
|
lc_OutputFile = FORCEPATH( lc_File, oFXU_LIB.cPathDatosTest )
|
||||||
|
lc_OutputFileTx2 = FORCEEXT( FORCEPATH( lc_File, oFXU_LIB.cPathDatosTest ), lcExt2 )
|
||||||
|
lc_OutputFileBak = lc_OutputFileTx2 + '.bak'
|
||||||
|
|
||||||
|
oFXU_LIB.copiarArchivosParaTest( FORCEEXT( lc_File, LEFT( JUSTEXT(lc_File),2 ) + '?' ) )
|
||||||
|
COPY FILE (lc_OutputFileTx2) TO (lc_OutputFileBak)
|
||||||
|
|
||||||
|
*-- Genero TX2
|
||||||
|
loCnv.Ejecutar( lc_OutputFile, .F., .F., .F., '1', '0', '1', '', '', .T., '', SYS(5)+CURDIR() )
|
||||||
|
lnNulls = OCCURS( CHR(0), FILETOSTR( lc_OutputFileTx2 ) )
|
||||||
|
|
||||||
|
*-- Comparo resultados
|
||||||
|
THIS.messageout( "Se comprueba si el archivo texto generado contiene NULLs" )
|
||||||
|
THIS.messageout( "NULLs esperados: " + TRANSFORM(lnNulls_Esperados) )
|
||||||
|
THIS.messageout( "NULLs encontrados: " + TRANSFORM(lnNulls) )
|
||||||
|
THIS.assertequals( lnNulls_Esperados, lnNulls, "COMPROBACI<43>N THE NULLS" )
|
||||||
|
|
||||||
|
|
||||||
|
CATCH TO loEx
|
||||||
|
THIS.Evaluate_results( loEx, lnCodError_Esperado, lc_OutputFile, lcParent, lcClass, lcObjName, loReg_Esperado )
|
||||||
|
|
||||||
|
FINALLY
|
||||||
|
STORE NULL TO loCnv, loCtl
|
||||||
|
RELEASE loCnv, loCtl
|
||||||
|
ENDTRY
|
||||||
|
|
||||||
|
ENDFUNC
|
||||||
|
|
||||||
|
|
||||||
*******************************************************************************************************************************************
|
*******************************************************************************************************************************************
|
||||||
FUNCTION Evaluate_TX2_Output_Test
|
FUNCTION Evaluate_TX2_Output_Test
|
||||||
LPARAMETERS tcFileName
|
LPARAMETERS tcFileName
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
****************************************************************************************************
|
****************************************************************************************************
|
||||||
* FOXBIN2PRG v1.19.25
|
* FOXBIN2PRG v1.19.26
|
||||||
* CONFIGURATION FILE / ARCHIVO DE CONFIGURACI<43>N
|
* CONFIGURATION FILE / ARCHIVO DE CONFIGURACI<43>N
|
||||||
*---------------------------------------------------------------------------------------------------
|
*---------------------------------------------------------------------------------------------------
|
||||||
* DON'T MODIFY THIS DOCUMENTATION SECTION / NO MODIFIQUE ESTA SECCI<43>N DE DOCUMENTACI<43>N
|
* DON'T MODIFY THIS DOCUMENTATION SECTION / NO MODIFIQUE ESTA SECCI<43>N DE DOCUMENTACI<43>N
|
||||||
@@ -12,10 +12,11 @@
|
|||||||
* DontShowErrors: 0 && Show message errors by default / Mostrar mensajes de error por defecto
|
* DontShowErrors: 0 && Show message errors by default / Mostrar mensajes de error por defecto
|
||||||
* NoTimestamps: 1 && Crear timespampt by default for minimize differences / Vaciar Timestamps por defecto para minimizar diferencias
|
* NoTimestamps: 1 && Crear timespampt by default for minimize differences / Vaciar Timestamps por defecto para minimizar diferencias
|
||||||
* Debug: 0 && Don't Activate individual <file>.Log by default / No Activar <archivo>.Log por defecto
|
* Debug: 0 && Don't Activate individual <file>.Log by default / No Activar <archivo>.Log por defecto
|
||||||
* ExtraBackupLevels: 0 && By default 1 BAK is created. With this you can make more .N.BAK, or none / Por defecto 1 BAK es creado. Con esto puede crear m<>s .N.BAK, o ninguno
|
* ExtraBackupLevels: 1 && By default 1 BAK is created. With this you can make more .N.BAK, or none / Por defecto 1 BAK es creado. Con esto puede crear m<>s .N.BAK, o ninguno
|
||||||
* ClearUniqueID: 1 && 0=Keep UniqueID, 1=Clear Unique ID. Useful for Diff and Merge / 0=Mantener UniqueID, 1=Borrar Unique ID. Util para Diff y Merge
|
* ClearUniqueID: 1 && 0=Keep UniqueID, 1=Clear Unique ID. Useful for Diff and Merge / 0=Mantener UniqueID, 1=Borrar Unique ID. Util para Diff y Merge
|
||||||
* OptimizeByFilestamp: 0 && Optimize file regeneration depending on file timestamp / Optimizar la regeneraci<63>n de archivos dependiendo del timestamp de archivo
|
* OptimizeByFilestamp: 0 && Optimize file regeneration depending on file timestamp / Optimizar la regeneraci<63>n de archivos dependiendo del timestamp de archivo
|
||||||
* AllowMultiConfig: 1 && 1=Allow CFG files per directory. if no CFG found, then use Main CFG. 0=Only use Main CFG
|
* AllowMultiConfig: 1 && 1=Allow CFG files per directory. if no CFG found, then use Main CFG. 0=Only use Main CFG
|
||||||
|
* DropNullCharsFromCode: 1 && 1=Drop NULL chars from source code / 0=Leave Nulls in code, if any
|
||||||
* XXX_Conversion_Support: N && 0=No support, 1=Generate TXT only (Diff), 2=Generate TXT and BIN (Merge)
|
* XXX_Conversion_Support: N && 0=No support, 1=Generate TXT only (Diff), 2=Generate TXT and BIN (Merge)
|
||||||
* PJX_Conversion_Support: 2 && Default value
|
* PJX_Conversion_Support: 2 && Default value
|
||||||
* VCX_Conversion_Support: 2 && Default value
|
* VCX_Conversion_Support: 2 && Default value
|
||||||
@@ -54,10 +55,11 @@
|
|||||||
*DontShowErrors: 1
|
*DontShowErrors: 1
|
||||||
*NoTimestamps: 0
|
*NoTimestamps: 0
|
||||||
*Debug: 1
|
*Debug: 1
|
||||||
*ExtraBackupLevels: 3
|
*ExtraBackupLevels: 0
|
||||||
*ClearUniqueID: 0
|
*ClearUniqueID: 0
|
||||||
*OptimizeByFilestamp: 0
|
*OptimizeByFilestamp: 0
|
||||||
*AllowMultiConfig: 0
|
*AllowMultiConfig: 0
|
||||||
|
*DropNullCharsFromCode: 0
|
||||||
|
|
||||||
|
|
||||||
* EN: Uncomment to activate the new value, comment to deactivate and use the default
|
* EN: Uncomment to activate the new value, comment to deactivate and use the default
|
||||||
|
|||||||
BIN
foxbin2prg.exe
BIN
foxbin2prg.exe
Binary file not shown.
@@ -23,10 +23,10 @@ _CompanyName = "Fernando D. Bozzo"
|
|||||||
_FileDescription = "Conversor bidireccional de binarios FoxPro 9 (scx,vcx,pjx) a texto para sustituir al scctext :-)"
|
_FileDescription = "Conversor bidireccional de binarios FoxPro 9 (scx,vcx,pjx) a texto para sustituir al scctext :-)"
|
||||||
_LegalCopyright = "Creative Commons 4: Reconocimiento - CompartirIgual (by-sa): http://creativecommons.org/licenses/by/4.0/"
|
_LegalCopyright = "Creative Commons 4: Reconocimiento - CompartirIgual (by-sa): http://creativecommons.org/licenses/by/4.0/"
|
||||||
_LegalTrademark = "Creative Commons 4: Reconocimiento - CompartirIgual (by-sa): http://creativecommons.org/licenses/by/4.0/"
|
_LegalTrademark = "Creative Commons 4: Reconocimiento - CompartirIgual (by-sa): http://creativecommons.org/licenses/by/4.0/"
|
||||||
_ProductName = " FOXBIN2PRG v1.19.25"
|
_ProductName = " FOXBIN2PRG v1.19.26"
|
||||||
_MajorVer = "1"
|
_MajorVer = "1"
|
||||||
_MinorVer = "19"
|
_MinorVer = "19"
|
||||||
_Revision = "25"
|
_Revision = "26"
|
||||||
_LanguageID = "1034"
|
_LanguageID = "1034"
|
||||||
_AutoIncrement = "0"
|
_AutoIncrement = "0"
|
||||||
*</DevInfo>
|
*</DevInfo>
|
||||||
|
|||||||
BIN
foxbin2prg.pjt
BIN
foxbin2prg.pjt
Binary file not shown.
BIN
foxbin2prg.pjx
BIN
foxbin2prg.pjx
Binary file not shown.
@@ -90,6 +90,9 @@
|
|||||||
* 14/06/2014 FDBOZZO v1.19.24 Arreglo bug vcx/scx: Un campo de tabla llamado "text" que comienza la l<>nea puede confundirse con la estructura TEXT/ENDTEXT y reconocer mal el resto del c<>digo
|
* 14/06/2014 FDBOZZO v1.19.24 Arreglo bug vcx/scx: Un campo de tabla llamado "text" que comienza la l<>nea puede confundirse con la estructura TEXT/ENDTEXT y reconocer mal el resto del c<>digo
|
||||||
* 16/06/2014 FDBOZZO v1.19.25 Mejora: Agregado soporte de configuraciones (CFG) por directorio que, si existen, se usan en lugar del principal (Mario Peschke)
|
* 16/06/2014 FDBOZZO v1.19.25 Mejora: Agregado soporte de configuraciones (CFG) por directorio que, si existen, se usan en lugar del principal (Mario Peschke)
|
||||||
* 17/06/2014 FDBOZZO v1.19.25 Mejora: Si durante la generaci<63>n de binarios o de textos se producen errores, mostrar un mensaje avisando de ello (Pedro Guti<74>rrez M.)
|
* 17/06/2014 FDBOZZO v1.19.25 Mejora: Si durante la generaci<63>n de binarios o de textos se producen errores, mostrar un mensaje avisando de ello (Pedro Guti<74>rrez M.)
|
||||||
|
* 06/07/2014 FDBOZZO v1.19.26 Mejora: Cuando se convierten binarios a texto, los CHR(0) pasan tambi<62>n, pudiendo provocar falsa detecci<63>n como binario. Se agrega opci<63>n para quitar los NULLs. (Matt Slay)
|
||||||
|
* 27/06/2014 FDBOZZO v1.19.26 Mejora: Si el campo memo "methods" de los vcx/scx contiene asteriscos fuera de lugar (que no deber<65>a), FoxBin2Prg lo procesa igualmente. (Daniel S<>nchez)
|
||||||
|
* 06/07/2014 FDBOZZO v1.19.26 Bug Fix cfg: ExtraBackupLevel no se tiene en cuenta cuando se usa multi-configuraci<63>n
|
||||||
* </HISTORIAL DE CAMBIOS Y NOTAS IMPORTANTES>
|
* </HISTORIAL DE CAMBIOS Y NOTAS IMPORTANTES>
|
||||||
*
|
*
|
||||||
*---------------------------------------------------------------------------------------------------
|
*---------------------------------------------------------------------------------------------------
|
||||||
@@ -124,6 +127,8 @@
|
|||||||
* 13/06/2014 Mario Peschke REPORTE BUG vcx/scx v1.19.23: Los campos de tabla con nombre "text" a veces provocan corrupci<63>n del binario generado (Arreglado en v1.19.24)
|
* 13/06/2014 Mario Peschke REPORTE BUG vcx/scx v1.19.23: Los campos de tabla con nombre "text" a veces provocan corrupci<63>n del binario generado (Arreglado en v1.19.24)
|
||||||
* 16/06/2014 Mario Peschke MEJORA v1.19.24: Agregado soporte de configuraciones (CFG) por directorio que, si existen, se usan en lugar del CFG principal (Agregado en v1.19.25)
|
* 16/06/2014 Mario Peschke MEJORA v1.19.24: Agregado soporte de configuraciones (CFG) por directorio que, si existen, se usan en lugar del CFG principal (Agregado en v1.19.25)
|
||||||
* 17/06/2014 Pedro Guti<74>rrez M. MEJORA v1.19.24: Si durante la generaci<63>n de binarios o de textos se producen errores, mostrar un mensaje avisando de ello (Agregado en v1.19.25)
|
* 17/06/2014 Pedro Guti<74>rrez M. MEJORA v1.19.24: Si durante la generaci<63>n de binarios o de textos se producen errores, mostrar un mensaje avisando de ello (Agregado en v1.19.25)
|
||||||
|
* 02/07/2014 Matt Slay MEJORA v1.19.25: Se filtran algunos CHR(0) de los binarios al tx2, provocando que a veces no sea reconocido como texto. Deber<65>an poderse quitar los NULLs (Arreglado en v1.19.26)
|
||||||
|
* 27/06/2014 Daniel S<>nchez MEJORA v1.19.25: Si el campo memo "methods" de los vcx/scx contiene asteriscos fuera de lugar (que no deber<65>a), FoxBin2Prg falla. Deber<65>a poder procesarlo igual.
|
||||||
* </TESTEO Y REPORTE DE BUGS (AGRADECIMIENTOS)>
|
* </TESTEO Y REPORTE DE BUGS (AGRADECIMIENTOS)>
|
||||||
*
|
*
|
||||||
*---------------------------------------------------------------------------------------------------
|
*---------------------------------------------------------------------------------------------------
|
||||||
@@ -277,6 +282,7 @@ LPARAMETERS tc_InputFile, tcType, tcTextName, tlGenText, tcDontShowErrors, tcDeb
|
|||||||
#DEFINE C_TAB CHR(9)
|
#DEFINE C_TAB CHR(9)
|
||||||
#DEFINE C_CR CHR(13)
|
#DEFINE C_CR CHR(13)
|
||||||
#DEFINE C_LF CHR(10)
|
#DEFINE C_LF CHR(10)
|
||||||
|
#DEFINE C_NULL_CHAR CHR(0)
|
||||||
#DEFINE CR_LF C_CR + C_LF
|
#DEFINE CR_LF C_CR + C_LF
|
||||||
#DEFINE C_MPROPHEADER REPLICATE( CHR(1), 517 )
|
#DEFINE C_MPROPHEADER REPLICATE( CHR(1), 517 )
|
||||||
*-- Fin / End
|
*-- Fin / End
|
||||||
@@ -346,7 +352,7 @@ LPARAMETERS tc_InputFile, tcType, tcTextName, tlGenText, tcDontShowErrors, tcDeb
|
|||||||
#DEFINE C_ONLY_SETNAME_AND_GETNAME_RECOGNIZED_LOC "Operaci<63>n no reconocida. Solo re reconoce SETNAME y GETNAME."
|
#DEFINE C_ONLY_SETNAME_AND_GETNAME_RECOGNIZED_LOC "Operaci<63>n no reconocida. Solo re reconoce SETNAME y GETNAME."
|
||||||
#DEFINE C_OUTPUT_FILE_IS_NOT_OVERWRITEN_LOC "Optimizaci<63>n: El archivo de salida [<<THIS.c_OutputFile>>] no se sobreescribe por ser igual al generado."
|
#DEFINE C_OUTPUT_FILE_IS_NOT_OVERWRITEN_LOC "Optimizaci<63>n: El archivo de salida [<<THIS.c_OutputFile>>] no se sobreescribe por ser igual al generado."
|
||||||
#DEFINE C_OUTPUTFILE_NEWER_THAN_INPUTFILE_LOC "Optimizaci<63>n: El archivo de salida [<<THIS.c_OutputFile>>] no se regenera por ser m<>s nuevo que el de entrada."
|
#DEFINE C_OUTPUTFILE_NEWER_THAN_INPUTFILE_LOC "Optimizaci<63>n: El archivo de salida [<<THIS.c_OutputFile>>] no se regenera por ser m<>s nuevo que el de entrada."
|
||||||
#DEFINE C_PROCEDURE_NOT_CLOSED_ON_LINE_LOC "Procedimiento sin cerrar. La <20>ltima l<>nea de c<>digo debe ser ENDPROC. [<<laLineas(1)>>]"
|
#DEFINE C_PROCEDURE_NOT_CLOSED_ON_LINE_LOC "Procedimiento sin cerrar. La <20>ltima l<>nea de c<>digo debe ser ENDPROC. [<<laLineas(1)>>, Recno:<<RECNO()>>]"
|
||||||
#DEFINE C_PROCESSING_LOC "Procesando archivo"
|
#DEFINE C_PROCESSING_LOC "Procesando archivo"
|
||||||
#DEFINE C_PROCESS_PROGRESS_LOC "Avance del proceso:"
|
#DEFINE C_PROCESS_PROGRESS_LOC "Avance del proceso:"
|
||||||
#DEFINE C_PROPERTY_NAME_NOT_RECOGNIZED_LOC "Propiedad [<<TRANSFORM(tnPropertyID)>>] no reconocida."
|
#DEFINE C_PROPERTY_NAME_NOT_RECOGNIZED_LOC "Propiedad [<<TRANSFORM(tnPropertyID)>>] no reconocida."
|
||||||
@@ -444,6 +450,7 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM
|
|||||||
+ [<memberdata name="lfilemode" display="lFileMode"/>] ;
|
+ [<memberdata name="lfilemode" display="lFileMode"/>] ;
|
||||||
+ [<memberdata name="l_cfg_cachedaccess" display="l_CFG_CachedAccess"/>] ;
|
+ [<memberdata name="l_cfg_cachedaccess" display="l_CFG_CachedAccess"/>] ;
|
||||||
+ [<memberdata name="l_allowmulticonfig" display="l_AllowMultiConfig"/>] ;
|
+ [<memberdata name="l_allowmulticonfig" display="l_AllowMultiConfig"/>] ;
|
||||||
|
+ [<memberdata name="l_dropnullcharsfromcode" display="l_DropNullCharsFromCode"/>] ;
|
||||||
+ [<memberdata name="l_clearuniqueid" display="l_ClearUniqueID"/>] ;
|
+ [<memberdata name="l_clearuniqueid" display="l_ClearUniqueID"/>] ;
|
||||||
+ [<memberdata name="l_configevaluated" display="l_ConfigEvaluated"/>] ;
|
+ [<memberdata name="l_configevaluated" display="l_ConfigEvaluated"/>] ;
|
||||||
+ [<memberdata name="l_debug" display="l_Debug"/>] ;
|
+ [<memberdata name="l_debug" display="l_Debug"/>] ;
|
||||||
@@ -514,6 +521,7 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM
|
|||||||
l_ShowErrors = .T.
|
l_ShowErrors = .T.
|
||||||
l_ShowProgress = .T.
|
l_ShowProgress = .T.
|
||||||
l_AllowMultiConfig = .T.
|
l_AllowMultiConfig = .T.
|
||||||
|
l_DropNullCharsFromCode = .T.
|
||||||
l_Recompile = .T.
|
l_Recompile = .T.
|
||||||
l_NoTimestamps = .T.
|
l_NoTimestamps = .T.
|
||||||
l_ClearUniqueID = .T.
|
l_ClearUniqueID = .T.
|
||||||
@@ -963,7 +971,7 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM
|
|||||||
STORE '' TO tcBakFile_1, tcBakFile_2, tcBakFile_3
|
STORE '' TO tcBakFile_1, tcBakFile_2, tcBakFile_3
|
||||||
|
|
||||||
WITH THIS AS c_foxbin2prg OF 'FOXBIN2PRG.PRG'
|
WITH THIS AS c_foxbin2prg OF 'FOXBIN2PRG.PRG'
|
||||||
IF THIS.n_ExtraBackupLevels > 0 THEN
|
IF .n_ExtraBackupLevels > 0 THEN
|
||||||
lcNext_Bak = .getNext_BAK( .c_OutputFile )
|
lcNext_Bak = .getNext_BAK( .c_OutputFile )
|
||||||
lcExt_1 = JUSTEXT( .c_OutputFile )
|
lcExt_1 = JUSTEXT( .c_OutputFile )
|
||||||
tcBakFile_1 = FORCEEXT(.c_OutputFile, lcExt_1 + lcNext_Bak)
|
tcBakFile_1 = FORCEEXT(.c_OutputFile, lcExt_1 + lcNext_Bak)
|
||||||
@@ -1145,21 +1153,28 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM
|
|||||||
lcValue = ALLTRIM( SUBSTR( laConfig(I), 15 ) )
|
lcValue = ALLTRIM( SUBSTR( laConfig(I), 15 ) )
|
||||||
IF NOT INLIST( TRANSFORM(tcClearUniqueID), '0', '1' ) AND INLIST( lcValue, '0', '1' ) THEN
|
IF NOT INLIST( TRANSFORM(tcClearUniqueID), '0', '1' ) AND INLIST( lcValue, '0', '1' ) THEN
|
||||||
tcClearUniqueID = lcValue
|
tcClearUniqueID = lcValue
|
||||||
.writeLog( JUSTFNAME(lcConfigFile) + ' > ClearUniqueID: ' + TRANSFORM(ALLTRIM( SUBSTR( laConfig(I), 15 )) ) )
|
.writeLog( JUSTFNAME(lcConfigFile) + ' > ClearUniqueID: ' + TRANSFORM(lcValue) )
|
||||||
ENDIF
|
ENDIF
|
||||||
|
|
||||||
CASE LEFT( laConfig(I), 20 ) == LOWER('OptimizeByFilestamp:')
|
CASE LEFT( laConfig(I), 20 ) == LOWER('OptimizeByFilestamp:')
|
||||||
lcValue = ALLTRIM( SUBSTR( laConfig(I), 21 ) )
|
lcValue = ALLTRIM( SUBSTR( laConfig(I), 21 ) )
|
||||||
IF NOT INLIST( TRANSFORM(tcOptimizeByFilestamp), '0', '1' ) AND INLIST( lcValue, '0', '1' ) THEN
|
IF NOT INLIST( TRANSFORM(tcOptimizeByFilestamp), '0', '1' ) AND INLIST( lcValue, '0', '1' ) THEN
|
||||||
tcOptimizeByFilestamp = lcValue
|
tcOptimizeByFilestamp = lcValue
|
||||||
.writeLog( JUSTFNAME(lcConfigFile) + ' > OptimizeByFilestamp: ' + TRANSFORM(ALLTRIM( SUBSTR( laConfig(I), 21 )) ) )
|
.writeLog( JUSTFNAME(lcConfigFile) + ' > OptimizeByFilestamp: ' + TRANSFORM(lcValue) )
|
||||||
ENDIF
|
ENDIF
|
||||||
|
|
||||||
CASE LEFT( laConfig(I), 17 ) == LOWER('AllowMultiConfig:')
|
CASE LEFT( laConfig(I), 17 ) == LOWER('AllowMultiConfig:')
|
||||||
lcValue = ALLTRIM( SUBSTR( laConfig(I), 18 ) )
|
lcValue = ALLTRIM( SUBSTR( laConfig(I), 18 ) )
|
||||||
IF INLIST( lcValue, '0', '1' ) THEN
|
IF INLIST( lcValue, '0', '1' ) THEN
|
||||||
.l_AllowMultiConfig = ( TRANSFORM(lcValue) == '1' )
|
.l_AllowMultiConfig = ( TRANSFORM(lcValue) == '1' )
|
||||||
.writeLog( JUSTFNAME(lcConfigFile) + ' > AllowMultiConfig: ' + TRANSFORM(ALLTRIM( SUBSTR( laConfig(I), 18 )) ) )
|
.writeLog( JUSTFNAME(lcConfigFile) + ' > AllowMultiConfig: ' + TRANSFORM(lcValue) )
|
||||||
|
ENDIF
|
||||||
|
|
||||||
|
CASE LEFT( laConfig(I), 22 ) == LOWER('DropNullCharsFromCode:')
|
||||||
|
lcValue = ALLTRIM( SUBSTR( laConfig(I), 23 ) )
|
||||||
|
IF INLIST( lcValue, '0', '1' ) THEN
|
||||||
|
.l_DropNullCharsFromCode = ( TRANSFORM(lcValue) == '1' )
|
||||||
|
.writeLog( JUSTFNAME(lcConfigFile) + ' > DropNullCharsFromCode: ' + TRANSFORM(lcValue) )
|
||||||
ENDIF
|
ENDIF
|
||||||
|
|
||||||
CASE LEFT( laConfig(I), 23 ) == LOWER('PJX_Conversion_Support:')
|
CASE LEFT( laConfig(I), 23 ) == LOWER('PJX_Conversion_Support:')
|
||||||
@@ -1245,20 +1260,23 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM
|
|||||||
lo_CFG.l_Debug = (TRANSFORM(tcDebug)=='1')
|
lo_CFG.l_Debug = (TRANSFORM(tcDebug)=='1')
|
||||||
ENDIF
|
ENDIF
|
||||||
tcExtraBackupLevels = EVL( tcExtraBackupLevels, TRANSFORM( lo_CFG.n_ExtraBackupLevels ) )
|
tcExtraBackupLevels = EVL( tcExtraBackupLevels, TRANSFORM( lo_CFG.n_ExtraBackupLevels ) )
|
||||||
|
IF ISDIGIT(tcExtraBackupLevels)
|
||||||
lo_CFG.n_ExtraBackupLevels = INT( VAL( TRANSFORM(tcExtraBackupLevels) ) )
|
lo_CFG.n_ExtraBackupLevels = INT( VAL( TRANSFORM(tcExtraBackupLevels) ) )
|
||||||
|
ENDIF
|
||||||
IF INLIST( TRANSFORM(tcOptimizeByFilestamp), '0', '1' ) THEN
|
IF INLIST( TRANSFORM(tcOptimizeByFilestamp), '0', '1' ) THEN
|
||||||
lo_CFG.l_OptimizeByFilestamp = NOT (TRANSFORM(tcOptimizeByFilestamp) == '0')
|
lo_CFG.l_OptimizeByFilestamp = NOT (TRANSFORM(tcOptimizeByFilestamp) == '0')
|
||||||
ENDIF
|
ENDIF
|
||||||
|
|
||||||
.writeLog( '---' )
|
.writeLog( '---' )
|
||||||
.writeLog( '> l_ShowProgress: ' + TRANSFORM(.l_ShowProgress) )
|
.writeLog( '> l_ShowProgress: ' + TRANSFORM(.l_ShowProgress) )
|
||||||
.writeLog( '> l_ShowErrors: ' + TRANSFORM(.l_ShowErrors) )
|
.writeLog( '> l_ShowErrors: ' + TRANSFORM(.l_ShowErrors) )
|
||||||
.writeLog( '> l_Recompile: ' + TRANSFORM(.l_Recompile) + ' (' + EVL(tcRecompile,'') + ')' )
|
.writeLog( '> l_Recompile: ' + TRANSFORM(.l_Recompile) + ' (' + EVL(tcRecompile,'') + ')' )
|
||||||
.writeLog( '> l_NoTimestamps: ' + TRANSFORM(.l_NoTimestamps) )
|
.writeLog( '> l_NoTimestamps: ' + TRANSFORM(.l_NoTimestamps) )
|
||||||
.writeLog( '> l_ClearUniqueID: ' + TRANSFORM(.l_ClearUniqueID) )
|
.writeLog( '> l_ClearUniqueID: ' + TRANSFORM(.l_ClearUniqueID) )
|
||||||
.writeLog( '> l_Debug: ' + TRANSFORM(.l_Debug) )
|
.writeLog( '> l_Debug: ' + TRANSFORM(.l_Debug) )
|
||||||
.writeLog( '> n_ExtraBackupLevels: ' + TRANSFORM(.n_ExtraBackupLevels) )
|
.writeLog( '> n_ExtraBackupLevels: ' + TRANSFORM(.n_ExtraBackupLevels) )
|
||||||
.writeLog( '> l_OptimizeByFilestamp: ' + TRANSFORM(.l_OptimizeByFilestamp) )
|
.writeLog( '> l_OptimizeByFilestamp: ' + TRANSFORM(.l_OptimizeByFilestamp) )
|
||||||
|
.writeLog( '> l_DropNullCharsFromCode: ' + TRANSFORM(.l_DropNullCharsFromCode) )
|
||||||
|
|
||||||
lo_CFG = NULL
|
lo_CFG = NULL
|
||||||
RELEASE lo_CFG
|
RELEASE lo_CFG
|
||||||
@@ -8119,16 +8137,20 @@ DEFINE CLASS c_conversor_bin_a_prg AS c_conversor_base
|
|||||||
*******************************************************************************************************************
|
*******************************************************************************************************************
|
||||||
PROCEDURE get_ADD_OBJECT_METHODS
|
PROCEDURE get_ADD_OBJECT_METHODS
|
||||||
LPARAMETERS toRegObj, toRegClass, tcMethods, taMethods, taCode, tnMethodCount ;
|
LPARAMETERS toRegObj, toRegClass, tcMethods, taMethods, taCode, tnMethodCount ;
|
||||||
, taPropsAndComments, tnPropsAndComments_Count, taProtected, tnProtected_Count
|
, taPropsAndComments, tnPropsAndComments_Count, taProtected, tnProtected_Count ;
|
||||||
|
, toFoxBin2Prg
|
||||||
|
|
||||||
EXTERNAL ARRAY taPropsAndComments, taProtected
|
EXTERNAL ARRAY taPropsAndComments, taProtected
|
||||||
|
#IF .F.
|
||||||
|
LOCAL toFoxBin2Prg AS c_foxbin2prg OF 'FOXBIN2PRG.PRG'
|
||||||
|
#ENDIF
|
||||||
|
|
||||||
TRY
|
TRY
|
||||||
LOCAL lcMethodName
|
LOCAL lcMethodName
|
||||||
|
|
||||||
WITH THIS AS c_conversor_bin_a_prg OF 'FOXBIN2PRG.PRG'
|
WITH THIS AS c_conversor_bin_a_prg OF 'FOXBIN2PRG.PRG'
|
||||||
.SortMethod( toRegObj.METHODS, @taMethods, @taCode, '', @tnMethodCount ;
|
.SortMethod( toRegObj.METHODS, @taMethods, @taCode, '', @tnMethodCount ;
|
||||||
, @taPropsAndComments, tnPropsAndComments_Count, @taProtected, tnProtected_Count )
|
, @taPropsAndComments, tnPropsAndComments_Count, @taProtected, tnProtected_Count, @toFoxBin2Prg )
|
||||||
|
|
||||||
*-- Ubico los m<>todos protegidos y les cambio la definici<63>n.
|
*-- Ubico los m<>todos protegidos y les cambio la definici<63>n.
|
||||||
*-- Los m<>todos se deben generar con la ruta completa, porque si no es imposible saber a que objeto corresponden,
|
*-- Los m<>todos se deben generar con la ruta completa, porque si no es imposible saber a que objeto corresponden,
|
||||||
@@ -8510,11 +8532,14 @@ DEFINE CLASS c_conversor_bin_a_prg AS c_conversor_base
|
|||||||
*******************************************************************************************************************
|
*******************************************************************************************************************
|
||||||
PROCEDURE SortMethod
|
PROCEDURE SortMethod
|
||||||
LPARAMETERS tcMethod, taMethods, taCode, tcSorted, tnMethodCount, taPropsAndComments, tnPropsAndComments_Count ;
|
LPARAMETERS tcMethod, taMethods, taCode, tcSorted, tnMethodCount, taPropsAndComments, tnPropsAndComments_Count ;
|
||||||
, taProtected, tnProtected_Count
|
, taProtected, tnProtected_Count, toFoxBin2Prg
|
||||||
*-- 29/10/2013 Fernando D. Bozzo
|
*-- 29/10/2013 Fernando D. Bozzo
|
||||||
*-- Se tiene en cuenta la posibilidad de que haya un PROC/ENDPROC dentro de un TEXT/ENDTEXT
|
*-- Se tiene en cuenta la posibilidad de que haya un PROC/ENDPROC dentro de un TEXT/ENDTEXT
|
||||||
*-- cuando es usado en un generador de c<>digo o similar.
|
*-- cuando es usado en un generador de c<>digo o similar.
|
||||||
EXTERNAL ARRAY taMethods, taCode, taPropsAndComments, taProtected
|
EXTERNAL ARRAY taMethods, taCode, taPropsAndComments, taProtected
|
||||||
|
#IF .F.
|
||||||
|
LOCAL toFoxBin2Prg AS c_foxbin2prg OF 'FOXBIN2PRG.PRG'
|
||||||
|
#ENDIF
|
||||||
|
|
||||||
*-- ESTRUCTURA DE LOS ARRAYS CREADOS:
|
*-- ESTRUCTURA DE LOS ARRAYS CREADOS:
|
||||||
*-- taMethods[1,3]
|
*-- taMethods[1,3]
|
||||||
@@ -8524,7 +8549,7 @@ DEFINE CLASS c_conversor_bin_a_prg AS c_conversor_base
|
|||||||
*-- taCode[1]
|
*-- taCode[1]
|
||||||
*-- Bloque de c<>digo del m<>todo en su posici<63>n original
|
*-- Bloque de c<>digo del m<>todo en su posici<63>n original
|
||||||
TRY
|
TRY
|
||||||
LOCAL lnLineCount, laLine(1), I, lnTextNodes, tcSorted, lnProtectedLine, lcMethod, lnLine_Len, lcLine
|
LOCAL lnLineCount, laLine(1), I, lnTextNodes, tcSorted, lnProtectedLine, lcMethod, lnLine_Len, lcLine, llProcOpen
|
||||||
LOCAL loEx AS EXCEPTION
|
LOCAL loEx AS EXCEPTION
|
||||||
DIMENSION taMethods(1,3)
|
DIMENSION taMethods(1,3)
|
||||||
STORE '' TO taMethods, tcSorted, taCode
|
STORE '' TO taMethods, tcSorted, taCode
|
||||||
@@ -8538,11 +8563,14 @@ DEFINE CLASS c_conversor_bin_a_prg AS c_conversor_base
|
|||||||
DIMENSION laLine(1), taMethods(1,3)
|
DIMENSION laLine(1), taMethods(1,3)
|
||||||
STORE '' TO laLine, taMethods, taCode
|
STORE '' TO laLine, taMethods, taCode
|
||||||
STORE 0 TO tnMethodCount, lnTextNodes
|
STORE 0 TO tnMethodCount, lnTextNodes
|
||||||
|
|
||||||
lnLineCount = ALINES(laLine, m.tcMethod) && NO aplicar nung<6E>n formato ni limpieza, que es el C<>DIGO FUENTE
|
lnLineCount = ALINES(laLine, m.tcMethod) && NO aplicar nung<6E>n formato ni limpieza, que es el C<>DIGO FUENTE
|
||||||
|
|
||||||
*-- Delete beginning empty lines before first "PROCEDURE", that is the first not empty line.
|
*-- Delete beginning empty lines before first "PROCEDURE", that is the first not empty line.
|
||||||
FOR I = 1 TO lnLineCount
|
FOR I = 1 TO lnLineCount
|
||||||
IF NOT EMPTY(laLine(I))
|
IF EMPTY(laLine(I)) OR LEFT( LTRIM(laLine(I)),1 ) = '*'
|
||||||
|
*-- Skip empty and commented lines
|
||||||
|
ELSE
|
||||||
IF I > 1
|
IF I > 1
|
||||||
FOR X = I-1 TO 1 STEP -1
|
FOR X = I-1 TO 1 STEP -1
|
||||||
ADEL(laLine, X)
|
ADEL(laLine, X)
|
||||||
@@ -8556,7 +8584,7 @@ DEFINE CLASS c_conversor_bin_a_prg AS c_conversor_base
|
|||||||
|
|
||||||
*-- Delete ending empty lines after last "ENDPROC", that is the last not empty line.
|
*-- Delete ending empty lines after last "ENDPROC", that is the last not empty line.
|
||||||
FOR I = lnLineCount TO 1 STEP -1
|
FOR I = lnLineCount TO 1 STEP -1
|
||||||
IF EMPTY(laLine(I))
|
IF EMPTY(laLine(I)) OR LEFT( LTRIM(laLine(I)),1 ) = '*'
|
||||||
ADEL(laLine, I)
|
ADEL(laLine, I)
|
||||||
ELSE
|
ELSE
|
||||||
IF I < lnLineCount
|
IF I < lnLineCount
|
||||||
@@ -8569,6 +8597,10 @@ DEFINE CLASS c_conversor_bin_a_prg AS c_conversor_base
|
|||||||
|
|
||||||
*-- Analyze and count line methods, get method names and consolidate block code
|
*-- Analyze and count line methods, get method names and consolidate block code
|
||||||
FOR I = 1 TO lnLineCount
|
FOR I = 1 TO lnLineCount
|
||||||
|
IF toFoxBin2Prg.l_DropNullCharsFromCode
|
||||||
|
laLine(I) = CHRTRAN( laLine(I), C_NULL_CHAR, '' )
|
||||||
|
ENDIF
|
||||||
|
|
||||||
lnLine_Len = LEN( laLine(I) )
|
lnLine_Len = LEN( laLine(I) )
|
||||||
|
|
||||||
DO CASE
|
DO CASE
|
||||||
@@ -8608,6 +8640,7 @@ DEFINE CLASS c_conversor_bin_a_prg AS c_conversor_base
|
|||||||
taMethods(tnMethodCount, 2) = tnMethodCount
|
taMethods(tnMethodCount, 2) = tnMethodCount
|
||||||
taMethods(tnMethodCount, 3) = ''
|
taMethods(tnMethodCount, 3) = ''
|
||||||
taCode(tnMethodCount) = laLine(I) + CR_LF
|
taCode(tnMethodCount) = laLine(I) + CR_LF
|
||||||
|
llProcOpen = .T.
|
||||||
|
|
||||||
CASE lnTextNodes = 0 AND UPPER( LEFT(laLine(I), 17) ) == 'HIDDEN PROCEDURE '
|
CASE lnTextNodes = 0 AND UPPER( LEFT(laLine(I), 17) ) == 'HIDDEN PROCEDURE '
|
||||||
tnMethodCount = tnMethodCount + 1
|
tnMethodCount = tnMethodCount + 1
|
||||||
@@ -8616,6 +8649,7 @@ DEFINE CLASS c_conversor_bin_a_prg AS c_conversor_base
|
|||||||
taMethods(tnMethodCount, 2) = tnMethodCount
|
taMethods(tnMethodCount, 2) = tnMethodCount
|
||||||
taMethods(tnMethodCount, 3) = 'HIDDEN '
|
taMethods(tnMethodCount, 3) = 'HIDDEN '
|
||||||
taCode(tnMethodCount) = laLine(I) + CR_LF
|
taCode(tnMethodCount) = laLine(I) + CR_LF
|
||||||
|
llProcOpen = .T.
|
||||||
|
|
||||||
CASE lnTextNodes = 0 AND UPPER( LEFT(laLine(I), 20) ) == 'PROTECTED PROCEDURE '
|
CASE lnTextNodes = 0 AND UPPER( LEFT(laLine(I), 20) ) == 'PROTECTED PROCEDURE '
|
||||||
tnMethodCount = tnMethodCount + 1
|
tnMethodCount = tnMethodCount + 1
|
||||||
@@ -8624,6 +8658,7 @@ DEFINE CLASS c_conversor_bin_a_prg AS c_conversor_base
|
|||||||
taMethods(tnMethodCount, 2) = tnMethodCount
|
taMethods(tnMethodCount, 2) = tnMethodCount
|
||||||
taMethods(tnMethodCount, 3) = 'PROTECTED '
|
taMethods(tnMethodCount, 3) = 'PROTECTED '
|
||||||
taCode(tnMethodCount) = laLine(I) + CR_LF
|
taCode(tnMethodCount) = laLine(I) + CR_LF
|
||||||
|
llProcOpen = .T.
|
||||||
|
|
||||||
CASE lnTextNodes = 0 AND LEFT(laLine(I), 7) == 'ENDPROC'
|
CASE lnTextNodes = 0 AND LEFT(laLine(I), 7) == 'ENDPROC'
|
||||||
lcLine = UPPER( CHRTRAN( laLine(I) , '&'+CHR(9)+CHR(0), ' ') ) + ' '
|
lcLine = UPPER( CHRTRAN( laLine(I) , '&'+CHR(9)+CHR(0), ' ') ) + ' '
|
||||||
@@ -8636,8 +8671,11 @@ DEFINE CLASS c_conversor_bin_a_prg AS c_conversor_base
|
|||||||
ENDIF
|
ENDIF
|
||||||
|
|
||||||
taCode(tnMethodCount) = taCode(tnMethodCount) + laLine(I) + CR_LF
|
taCode(tnMethodCount) = taCode(tnMethodCount) + laLine(I) + CR_LF
|
||||||
|
llProcOpen = .F.
|
||||||
|
|
||||||
CASE tnMethodCount = 0 && Skip empty lines before methods begin
|
CASE tnMethodCount = 0 OR NOT llProcOpen AND LEFT( LTRIM(laLine(I)),1 ) = '*'
|
||||||
|
*-- Skip empty and commented lines before methods begin
|
||||||
|
*-- Aqu<71> como condici<63>n podr<64>a poner: NOT llProcOpen AND LEFT(laLine(I), 7) # 'ENDPROC', pero abarcar<61>a demasiado.
|
||||||
|
|
||||||
OTHERWISE && Method Code
|
OTHERWISE && Method Code
|
||||||
taCode(tnMethodCount) = taCode(tnMethodCount) + laLine(I) + CR_LF
|
taCode(tnMethodCount) = taCode(tnMethodCount) + laLine(I) + CR_LF
|
||||||
@@ -8777,7 +8815,7 @@ DEFINE CLASS c_conversor_bin_a_prg AS c_conversor_base
|
|||||||
|
|
||||||
*******************************************************************************************************************
|
*******************************************************************************************************************
|
||||||
PROCEDURE write_ALL_OBJECT_METHODS
|
PROCEDURE write_ALL_OBJECT_METHODS
|
||||||
LPARAMETERS tcMethods, taPropsAndComments, tnPropsAndComments_Count, taProtected, tnProtected_Count
|
LPARAMETERS tcMethods, taPropsAndComments, tnPropsAndComments_Count, taProtected, tnProtected_Count, toFoxBin2Prg
|
||||||
|
|
||||||
*-- Finalmente, todos los m<>todos los ordeno y escribo juntos
|
*-- Finalmente, todos los m<>todos los ordeno y escribo juntos
|
||||||
LOCAL laMethods(1), laCode(1), lnMethodCount, I, lcMethods
|
LOCAL laMethods(1), laCode(1), lnMethodCount, I, lcMethods
|
||||||
@@ -8788,7 +8826,7 @@ DEFINE CLASS c_conversor_bin_a_prg AS c_conversor_base
|
|||||||
|
|
||||||
WITH THIS AS c_conversor_bin_a_prg OF 'FOXBIN2PRG.PRG'
|
WITH THIS AS c_conversor_bin_a_prg OF 'FOXBIN2PRG.PRG'
|
||||||
.SortMethod( @tcMethods, @laMethods, @laCode, '', @lnMethodCount ;
|
.SortMethod( @tcMethods, @laMethods, @laCode, '', @lnMethodCount ;
|
||||||
, @taPropsAndComments, tnPropsAndComments_Count, @taProtected, tnProtected_Count )
|
, @taPropsAndComments, tnPropsAndComments_Count, @taProtected, tnProtected_Count, @toFoxBin2Prg )
|
||||||
|
|
||||||
FOR I = 1 TO lnMethodCount
|
FOR I = 1 TO lnMethodCount
|
||||||
*-- Genero los m<>todos indentados
|
*-- Genero los m<>todos indentados
|
||||||
@@ -9850,7 +9888,7 @@ DEFINE CLASS c_conversor_vcx_a_prg AS c_conversor_bin_a_prg
|
|||||||
DIMENSION laMethods(1,3)
|
DIMENSION laMethods(1,3)
|
||||||
laMethods = ''
|
laMethods = ''
|
||||||
.SortMethod( loRegClass.METHODS, @laMethods, @laCode, '', @lnMethodCount ;
|
.SortMethod( loRegClass.METHODS, @laMethods, @laCode, '', @lnMethodCount ;
|
||||||
, @laPropsAndComments, lnPropsAndComments_Count, @laProtected, lnProtected_Count )
|
, @laPropsAndComments, lnPropsAndComments_Count, @laProtected, lnProtected_Count, @toFoxBin2Prg )
|
||||||
|
|
||||||
.write_CLASS_METHODS( @lnMethodCount, @laMethods, @laCode, @laProtected, @laPropsAndComments )
|
.write_CLASS_METHODS( @lnMethodCount, @laMethods, @laCode, @laProtected, @laPropsAndComments )
|
||||||
|
|
||||||
@@ -9878,10 +9916,11 @@ DEFINE CLASS c_conversor_vcx_a_prg AS c_conversor_bin_a_prg
|
|||||||
ENDIF
|
ENDIF
|
||||||
|
|
||||||
.get_ADD_OBJECT_METHODS( @loRegObj, @loRegClass, @lcMethods, @laMethods, @laCode, @lnMethodCount ;
|
.get_ADD_OBJECT_METHODS( @loRegObj, @loRegClass, @lcMethods, @laMethods, @laCode, @lnMethodCount ;
|
||||||
, @laPropsAndComments, lnPropsAndComments_Count, @laProtected, lnProtected_Count )
|
, @laPropsAndComments, lnPropsAndComments_Count, @laProtected, lnProtected_Count, @toFoxBin2Prg )
|
||||||
ENDSCAN
|
ENDSCAN
|
||||||
|
|
||||||
.write_ALL_OBJECT_METHODS( @lcMethods, @laPropsAndComments, lnPropsAndComments_Count, @laProtected, lnProtected_Count )
|
.write_ALL_OBJECT_METHODS( @lcMethods, @laPropsAndComments, lnPropsAndComments_Count, @laProtected ;
|
||||||
|
, lnProtected_Count, @toFoxBin2Prg )
|
||||||
|
|
||||||
GOTO RECORD (lnRecno)
|
GOTO RECORD (lnRecno)
|
||||||
ENDSCAN
|
ENDSCAN
|
||||||
@@ -10087,7 +10126,7 @@ DEFINE CLASS c_conversor_scx_a_prg AS c_conversor_bin_a_prg
|
|||||||
DIMENSION laMethods(1,3)
|
DIMENSION laMethods(1,3)
|
||||||
laMethods = ''
|
laMethods = ''
|
||||||
.SortMethod( loRegClass.METHODS, @laMethods, @laCode, '', @lnMethodCount ;
|
.SortMethod( loRegClass.METHODS, @laMethods, @laCode, '', @lnMethodCount ;
|
||||||
, @laPropsAndComments, lnPropsAndComments_Count, @laProtected, lnProtected_Count )
|
, @laPropsAndComments, lnPropsAndComments_Count, @laProtected, lnProtected_Count, @toFoxBin2Prg )
|
||||||
|
|
||||||
.write_CLASS_METHODS( @lnMethodCount, @laMethods, @laCode, @laProtected, @laPropsAndComments )
|
.write_CLASS_METHODS( @lnMethodCount, @laMethods, @laCode, @laProtected, @laPropsAndComments )
|
||||||
|
|
||||||
@@ -10117,10 +10156,11 @@ DEFINE CLASS c_conversor_scx_a_prg AS c_conversor_bin_a_prg
|
|||||||
ENDIF
|
ENDIF
|
||||||
|
|
||||||
.get_ADD_OBJECT_METHODS( @loRegObj, @loRegClass, @lcMethods, @laMethods, @laCode, @lnMethodCount ;
|
.get_ADD_OBJECT_METHODS( @loRegObj, @loRegClass, @lcMethods, @laMethods, @laCode, @lnMethodCount ;
|
||||||
, @laPropsAndComments, lnPropsAndComments_Count, @laProtected, lnProtected_Count )
|
, @laPropsAndComments, lnPropsAndComments_Count, @laProtected, lnProtected_Count, @toFoxBin2Prg )
|
||||||
ENDSCAN
|
ENDSCAN
|
||||||
|
|
||||||
.write_ALL_OBJECT_METHODS( @lcMethods, @laPropsAndComments, lnPropsAndComments_Count, @laProtected, lnProtected_Count )
|
.write_ALL_OBJECT_METHODS( @lcMethods, @laPropsAndComments, lnPropsAndComments_Count, @laProtected ;
|
||||||
|
, lnProtected_Count, @toFoxBin2Prg )
|
||||||
|
|
||||||
GOTO RECORD (lnRecno)
|
GOTO RECORD (lnRecno)
|
||||||
ENDSCAN
|
ENDSCAN
|
||||||
|
|||||||
@@ -35,7 +35,7 @@
|
|||||||
#DEFINE C_ONLY_SETNAME_AND_GETNAME_RECOGNIZED_LOC "Befehl nicht erkannt. Nur SETNAME und GETNAME erlaubt."
|
#DEFINE C_ONLY_SETNAME_AND_GETNAME_RECOGNIZED_LOC "Befehl nicht erkannt. Nur SETNAME und GETNAME erlaubt."
|
||||||
#DEFINE C_OUTPUT_FILE_IS_NOT_OVERWRITEN_LOC "Optimierung: Ausgabedatei [<<THIS.c_OutputFile>>] wurde nicht <20>berschrieben da sie dieselbe ist wie die neu generierte."
|
#DEFINE C_OUTPUT_FILE_IS_NOT_OVERWRITEN_LOC "Optimierung: Ausgabedatei [<<THIS.c_OutputFile>>] wurde nicht <20>berschrieben da sie dieselbe ist wie die neu generierte."
|
||||||
#DEFINE C_OUTPUTFILE_NEWER_THAN_INPUTFILE_LOC "Optimierung: Ausgabedatei [<<THIS.c_OutputFile>>] wurde nicht erneuert da sie neuer ist als die Ursprungsdatei."
|
#DEFINE C_OUTPUTFILE_NEWER_THAN_INPUTFILE_LOC "Optimierung: Ausgabedatei [<<THIS.c_OutputFile>>] wurde nicht erneuert da sie neuer ist als die Ursprungsdatei."
|
||||||
#DEFINE C_PROCEDURE_NOT_CLOSED_ON_LINE_LOC "Procedur nicht geschlossen. Letzte Zeile des Codes muss ENDPROC sein. [<<laLineas(1)>>]"
|
#DEFINE C_PROCEDURE_NOT_CLOSED_ON_LINE_LOC "Procedur nicht geschlossen. Letzte Zeile des Codes muss ENDPROC sein. [<<laLineas(1)>>, Recno:<<RECNO()>>]"
|
||||||
#DEFINE C_PROCESSING_LOC "Bearbeite Datei"
|
#DEFINE C_PROCESSING_LOC "Bearbeite Datei"
|
||||||
#DEFINE C_PROCESS_PROGRESS_LOC "Bearbeitungsfortschritt:"
|
#DEFINE C_PROCESS_PROGRESS_LOC "Bearbeitungsfortschritt:"
|
||||||
#DEFINE C_PROPERTY_NAME_NOT_RECOGNIZED_LOC "Eigenschaft [<<TRANSFORM(tnPropertyID)>>] nicht erkannt."
|
#DEFINE C_PROPERTY_NAME_NOT_RECOGNIZED_LOC "Eigenschaft [<<TRANSFORM(tnPropertyID)>>] nicht erkannt."
|
||||||
|
|||||||
@@ -35,7 +35,7 @@
|
|||||||
#DEFINE C_ONLY_SETNAME_AND_GETNAME_RECOGNIZED_LOC "Operation not recognized. Only SETNAME and GETNAME allowed."
|
#DEFINE C_ONLY_SETNAME_AND_GETNAME_RECOGNIZED_LOC "Operation not recognized. Only SETNAME and GETNAME allowed."
|
||||||
#DEFINE C_OUTPUT_FILE_IS_NOT_OVERWRITEN_LOC "Optimization: Output file [<<THIS.c_OutputFile>>] was not overwritten because it is the same as was generated."
|
#DEFINE C_OUTPUT_FILE_IS_NOT_OVERWRITEN_LOC "Optimization: Output file [<<THIS.c_OutputFile>>] was not overwritten because it is the same as was generated."
|
||||||
#DEFINE C_OUTPUTFILE_NEWER_THAN_INPUTFILE_LOC "Optimization: Output file [<<THIS.c_OutputFile>>] was not regenerated because it is newer than the inputfile."
|
#DEFINE C_OUTPUTFILE_NEWER_THAN_INPUTFILE_LOC "Optimization: Output file [<<THIS.c_OutputFile>>] was not regenerated because it is newer than the inputfile."
|
||||||
#DEFINE C_PROCEDURE_NOT_CLOSED_ON_LINE_LOC "Procedure not closed. Last line of code must be ENDPROC. [<<laLineas(1)>>]"
|
#DEFINE C_PROCEDURE_NOT_CLOSED_ON_LINE_LOC "Procedure not closed. Last line of code must be ENDPROC. [<<laLineas(1)>>, Recno:<<RECNO()>>]"
|
||||||
#DEFINE C_PROCESSING_LOC "Processing file"
|
#DEFINE C_PROCESSING_LOC "Processing file"
|
||||||
#DEFINE C_PROCESS_PROGRESS_LOC "Process Progress:"
|
#DEFINE C_PROCESS_PROGRESS_LOC "Process Progress:"
|
||||||
#DEFINE C_PROPERTY_NAME_NOT_RECOGNIZED_LOC "Property [<<TRANSFORM(tnPropertyID)>>] is not recognized."
|
#DEFINE C_PROPERTY_NAME_NOT_RECOGNIZED_LOC "Property [<<TRANSFORM(tnPropertyID)>>] is not recognized."
|
||||||
|
|||||||
Reference in New Issue
Block a user