diff --git a/TESTS/ut__foxbin2prg__c_foxbin2prg__EvaluarConfiguracion.prg b/TESTS/ut__foxbin2prg__c_foxbin2prg__EvaluarConfiguracion.prg
index 9152d58..2eb40a6 100644
--- a/TESTS/ut__foxbin2prg__c_foxbin2prg__EvaluarConfiguracion.prg
+++ b/TESTS/ut__foxbin2prg__c_foxbin2prg__EvaluarConfiguracion.prg
@@ -292,7 +292,7 @@ DEFINE CLASS ut__foxbin2prg__c_foxbin2prg__EvaluarConfiguracion AS FxuTestCase O
ADDPROPERTY( loFB2P_Esperado, 'DBC_Conversion_Support', 1 )
ADDPROPERTY( loFB2P_Esperado, 'l_ShowProgress', .T. )
ADDPROPERTY( loFB2P_Esperado, 'l_ShowErrors', .T. )
- ADDPROPERTY( loFB2P_Esperado, 'l_Recompile', .F. )
+ ADDPROPERTY( loFB2P_Esperado, 'l_Recompile', .T. )
ADDPROPERTY( loFB2P_Esperado, 'l_NoTimestamps', .T. )
ADDPROPERTY( loFB2P_Esperado, 'l_ClearUniqueID', .T. )
ADDPROPERTY( loFB2P_Esperado, 'l_Debug', .T. )
@@ -2427,7 +2427,7 @@ DEFINE CLASS ut__foxbin2prg__c_foxbin2prg__EvaluarConfiguracion AS FxuTestCase O
STORE 0 TO lnCodError
lcSeteo = 'LBX_Conversion_Support:'
leValorEsperado = 1
- laCFG_CachedAccess_Esperado(1) = .F.
+ laCFG_CachedAccess_Esperado(1) = .T.
laCFG_CachedAccess_Esperado(2) = .T.
laCFG_CachedAccess_Esperado(3) = .T.
@@ -2489,7 +2489,7 @@ DEFINE CLASS ut__foxbin2prg__c_foxbin2prg__EvaluarConfiguracion AS FxuTestCase O
STORE 0 TO lnCodError
lcSeteo = 'LBX_Conversion_Support:'
leValorEsperado = 0
- laCFG_CachedAccess_Esperado(1) = .F.
+ laCFG_CachedAccess_Esperado(1) = .T.
laCFG_CachedAccess_Esperado(2) = .T.
laCFG_CachedAccess_Esperado(3) = .T.
diff --git a/foxbin2prg.prg b/foxbin2prg.prg
index 7d1b866..e5b5fc3 100644
--- a/foxbin2prg.prg
+++ b/foxbin2prg.prg
@@ -401,7 +401,7 @@ LOCAL lnResp, loEx AS EXCEPTION
*ENDIF
*-- En el caso de recibir "BIN2PRG" o "PRG2BIN" en el primer parámetro, los invierto.
-IF INLIST(UPPER(TRANSFORM(tc_InputFile)), 'BIN2PRG', 'PRG2BIN', 'INTERACTIVE') THEN
+IF INLIST(UPPER(TRANSFORM(tc_InputFile)), 'BIN2PRG', 'PRG2BIN', 'BIN2PRG-INTERACTIVE', 'PRG2BIN-INTERACTIVE', 'INTERACTIVE') THEN
pcParamX = tc_InputFile
tc_InputFile = tcType
tcType = pcParamX
@@ -453,7 +453,7 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM
+ [] ;
+ [] ;
+ [] ;
- + [] ;
+ + [] ;
+ [] ;
+ [] ;
+ [] ;
@@ -461,6 +461,7 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM
+ [] ;
+ [] ;
+ [] ;
+ + [] ;
+ [] ;
+ [] ;
+ [] ;
@@ -545,6 +546,7 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM
+ [] ;
+ [] ;
+ [] ;
+ + [] ;
+ [] ;
+ [] ;
+ []
@@ -564,7 +566,8 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM
c_CurDir = ''
c_InputFile = ''
c_OriginalFileName = ''
- c_LogFile = ADDBS( SYS(2023) ) + 'FoxBin2Prg.LOG'
+ c_LogFile = ADDBS( SYS(2023) ) + 'FoxBin2Prg_Debug.LOG'
+ c_ErrorLogFile = ADDBS( SYS(2023) ) + 'FoxBin2Prg_Error.LOG'
c_TextLog = ''
c_OutputFile = ''
c_Recompile = '1'
@@ -577,7 +580,7 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM
l_ConfigEvaluated = .F.
l_Debug = .F.
l_Error = .F.
- c_ErrorLog = ''
+ c_TextErr = ''
l_Test = .F.
l_ShowErrors = .T.
l_ShowProgress = .T.
@@ -642,6 +645,9 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM
ON ESCAPE ERROR 1799
SET ESCAPE ON
+ ERASE (THIS.c_ErrorLogFile)
+ ERASE (THIS.c_LogFile)
+
THIS.writeLog( REPLICATE( '*', 100 ) )
THIS.writeLog( 'FoxBin2Prg INIT' )
THIS.writeLog( REPLICATE( '*', 100 ) )
@@ -1823,7 +1829,8 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM
.n_ProcessedFiles = 0
lnPCount = 0
- *-- Funciona y lee los parámetros, pero no le veo un caso de uso claro. 12/12/2014
+ *-- Funciona y lee los parámetros, pero no le veo un caso de uso claro, ya que si se eligen
+ *-- varios directorios de proyecto, la compilación será errónea. 12/12/2014
*.ReadInputVFPParams( @laParams, @lnPCount )
*IF lnPCount > 0 THEN
@@ -1966,7 +1973,6 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM
ERROR 1799
CASE lnCodError > 0
- .l_Error = .T.
.ejecutar_WriteErrorLog( @toEx )
ENDCASE
ENDFOR
@@ -2007,7 +2013,6 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM
ERROR 1799
CASE lnCodError > 0
- .l_Error = .T.
.ejecutar_WriteErrorLog( @toEx )
ENDCASE
ENDFOR
@@ -2161,7 +2166,10 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM
ENDCASE
.c_LogFile = tc_InputFile + '.LOG'
- ERASE ( .c_LogFile )
+
+ IF .l_Debug
+ ERASE ( .c_LogFile )
+ ENDIF
lnCodError = .Convertir( tc_InputFile, toModulo, toEx, .T., tcOriginalFileName )
.AvanceDelProceso( loLang.C_END_OF_PROCESS_LOC, 1, 1, 0 )
@@ -2174,7 +2182,6 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM
CATCH TO toEx
lnCodError = toEx.ERRORNO
- THIS.l_Error = .T.
IF VARTYPE(loLang) <> 'O' THEN
loLang = CREATEOBJECT("CL_LANG","EN")
@@ -2202,8 +2209,6 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM
ENDIF
FINALLY
- lcErrorFile = FORCEPATH('FoxBin2Prg_Error.LOG', SYS(2023) )
-
IF VARTYPE(loLang) <> 'O' THEN
loLang = CREATEOBJECT("CL_LANG","EN")
ENDIF
@@ -2219,13 +2224,13 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM
DO CASE
CASE lnCodError = 1799 && Conversion Cancelled
MESSAGEBOX( loLang.C_CONVERSION_CANCELLED_BY_USER_LOC + '!', 0+48+4096, 'FoxBin2Prg', 60000 )
- STRTOFILE( THIS.c_ErrorLog, lcErrorFile )
- loWSH.Run( lcErrorFile, 1, .F. )
+ THIS.writeErrorLog_Flush( )
+ loWSH.Run( THIS.c_ErrorLogFile, 1, .F. )
CASE THIS.l_Error
MESSAGEBOX( loLang.C_END_OF_PROCESS_LOC + '! (' + loLang.C_WITH_ERRORS_LOC + ')', 0+48+4096, 'FoxBin2Prg', 60000 )
- STRTOFILE( THIS.c_ErrorLog, lcErrorFile )
- loWSH.Run( lcErrorFile, 1, .F. )
+ THIS.writeErrorLog_Flush( )
+ loWSH.Run( THIS.c_ErrorLogFile, 1, .F. )
OTHERWISE
MESSAGEBOX( loLang.C_END_OF_PROCESS_LOC, 0+64+4096, 'FoxBin2Prg', 60000 )
@@ -2233,7 +2238,7 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM
ENDCASE
CASE THIS.l_Debug
- STRTOFILE( THIS.c_ErrorLog, lcErrorFile )
+ THIS.writeErrorLog_Flush( )
ENDCASE
@@ -2287,6 +2292,7 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM
LOCAL lnCodError, lcErrorInfo, laDirFile(1,5), lcExtension, lnFileCount, laFiles(1,1), I ;
, ltFilestamp, lcExtA, lcExtB, laEvents(1,1) ;
, loLang as CL_LANG OF 'FOXBIN2PRG.PRG' ;
+ , loConversor as C_CONVERSOR_BASE OF 'FOXBIN2PRG.PRG' ;
, loFSO AS Scripting.FileSystemObject
lnCodError = 0
@@ -2552,17 +2558,18 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM
IF NOT .l_OptimizeByFilestamp OR .t_InputFile_TimeStamp >= .t_OutputFile_TimeStamp THEN
.c_Type = UPPER(JUSTEXT(.c_OutputFile))
- .o_Conversor.c_InputFile = .c_InputFile
- .o_Conversor.c_OutputFile = .c_OutputFile
- .o_Conversor.c_LogFile = .c_LogFile
- .o_Conversor.l_Debug = .l_Debug
- .o_Conversor.l_Test = .l_Test
- .o_Conversor.n_FB2PRG_Version = .n_FB2PRG_Version
- .o_Conversor.l_MethodSort_Enabled = .l_MethodSort_Enabled
- .o_Conversor.l_PropSort_Enabled = .l_PropSort_Enabled
- .o_Conversor.l_ReportSort_Enabled = .l_ReportSort_Enabled
- .o_Conversor.c_OriginalFileName = .c_OriginalFileName
- .o_Conversor.c_Foxbin2prg_FullPath = .c_Foxbin2prg_FullPath
+ loConversor = .o_Conversor
+ loConversor.c_InputFile = .c_InputFile
+ loConversor.c_OutputFile = .c_OutputFile
+ loConversor.c_LogFile = .c_LogFile
+ loConversor.l_Debug = .l_Debug
+ loConversor.l_Test = .l_Test
+ loConversor.n_FB2PRG_Version = .n_FB2PRG_Version
+ loConversor.l_MethodSort_Enabled = .l_MethodSort_Enabled
+ loConversor.l_PropSort_Enabled = .l_PropSort_Enabled
+ loConversor.l_ReportSort_Enabled = .l_ReportSort_Enabled
+ loConversor.c_OriginalFileName = .c_OriginalFileName
+ loConversor.c_Foxbin2prg_FullPath = .c_Foxbin2prg_FullPath
*--
.AvanceDelProceso( loLang.C_PROCESSING_LOC + ' ' + .c_InputFile + '...', 0, 0, 0 )
@@ -2570,9 +2577,16 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM
BINDEVENT( .o_Conversor, 'AvanceDelProceso', THIS, 'AvanceDelProceso' )
ENDIF
- .o_Conversor.Convertir( @toModulo, .F., THIS )
+ loConversor.Convertir( @toModulo, .F., THIS )
.writeLog()
.writeLog(.o_Conversor.c_TextLog) && Recojo el LOG que haya generado el conversor
+
+ *-- Logueo los errores
+ IF NOT EMPTY(loConversor.c_TextErr) THEN
+ .writeErrorLog( PADR( 'ERRORS FOUND IN FILE [' + .c_InputFile + '] ', 100, '-' ) )
+ .writeErrorLog( loConversor.c_TextErr )
+ .writeErrorLog( )
+ ENDIF
ELSE
*-- Optimizado: El Origen es anterior al Destino - No hace falta regenerar
*.writeLog( '> El archivo de salida [<>] no se regenera por ser más nuevo que el de entrada.' )
@@ -2600,8 +2614,8 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM
IF AEVENTS( laEvents, THIS.o_Conversor ) > 0 THEN
UNBINDEVENTS( THIS.o_Conversor )
ENDIF
- loFSO = NULL
- THIS.o_Conversor = NULL
+
+ STORE NULL TO loConversor, THIS.o_Conversor, loFSO
*IF lnCodError = 0 OR NOT THIS.l_ShowErrors THEN
* THIS.writeLog( REPLICATE('-',100) )
@@ -2610,7 +2624,7 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM
RELEASE tc_InputFile, toModulo, toEx, tlRelanzarError, tcOriginalFileName ;
, lcErrorInfo, laDirFile, lcExtension, lnFileCount, laFiles, I ;
, ltFilestamp, lcExtA, lcExtB ;
- , loFSO
+ , loConversor, loFSO
ENDTRY
RETURN lnCodError
@@ -2916,12 +2930,21 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM
LPARAMETERS tcText
TRY
- THIS.c_ErrorLog = THIS.c_ErrorLog + EVL(tcText,'') + CR_LF
+ THIS.c_TextErr = THIS.c_TextErr + TTOC(DATETIME(),3) + ' ' + EVL(tcText,'') + CR_LF
+ THIS.l_Error = .T.
CATCH
ENDTRY
ENDPROC
+ PROCEDURE writeErrorLog_Flush
+ IF NOT EMPTY(THIS.c_TextErr)
+ STRTOFILE( STRCONV(THIS.c_TextErr + CR_LF,9), THIS.c_ErrorLogFile, 1 )
+ ENDIF
+ THIS.c_TextErr = ''
+ ENDPROC
+
+
*******************************************************************************************************************
PROCEDURE writeLog
LPARAMETERS tcText
@@ -2933,7 +2956,6 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM
ENDPROC
- *******************************************************************************************************************
PROCEDURE writeLog_Flush
IF THIS.l_Debug AND NOT EMPTY(THIS.c_TextLog)
STRTOFILE( STRCONV(THIS.c_TextLog + CR_LF,9), THIS.c_LogFile, 1 )
@@ -3192,6 +3214,7 @@ DEFINE CLASS c_conversor_base AS SESSION
+ [] ;
+ [] ;
+ [] ;
+ + [] ;
+ [] ;
+ [] ;
+ [] ;
@@ -3200,8 +3223,10 @@ DEFINE CLASS c_conversor_base AS SESSION
+ [] ;
+ [] ;
+ [] ;
+ + [] ;
+ [] ;
+ [] ;
+ + [] ;
+ [] ;
+ [] ;
+ [] ;
@@ -3222,6 +3247,7 @@ DEFINE CLASS c_conversor_base AS SESSION
, a_SpecialProps_XMLAda(1), a_SpecialProps_XMLFld(1), a_SpecialProps_XMLTbl(1)
l_Debug = .F.
+ l_Error = .F.
l_Test = .F.
c_InputFile = ''
c_OutputFile = ''
@@ -3233,6 +3259,7 @@ DEFINE CLASS c_conversor_base AS SESSION
c_CurDir = ''
c_LogFile = ''
c_TextLog = ''
+ c_TextErr = ''
l_MethodSort_Enabled = .T.
l_PropSort_Enabled = .T.
l_ReportSort_Enabled = .T.
@@ -4646,6 +4673,17 @@ DEFINE CLASS c_conversor_base AS SESSION
ENDPROC
+ PROCEDURE writeErrorLog
+ LPARAMETERS tcText
+
+ TRY
+ THIS.c_TextErr = THIS.c_TextErr + EVL(tcText,'') + CR_LF
+ THIS.l_Error = .T.
+ CATCH
+ ENDTRY
+ ENDPROC
+
+
ENDDEFINE
@@ -4808,8 +4846,13 @@ DEFINE CLASS c_conversor_prg_a_bin AS c_conversor_base
*******************************************************************************************************************
PROCEDURE createProject
+ LPARAMETERS tcTableOrCursor && 'TABLE' or 'CURSOR'
- CREATE TABLE (THIS.c_OutputFile) ;
+ LOCAL lcCursorName
+ tcTableOrCursor = EVL( tcTableOrCursor, 'TABLE' )
+ lcCursorName = ICASE( tcTableOrCursor = 'TABLE', THIS.c_OutputFile, 'TABLABIN' )
+
+ CREATE &tcTableOrCursor. (lcCursorName) ;
( NAME M ;
, TYPE C(1) ;
, ID N(10) ;
@@ -4839,7 +4882,9 @@ DEFINE CLASS c_conversor_prg_a_bin AS c_conversor_base
, KEY C(32) ;
, USER M )
- USE (THIS.c_OutputFile) ALIAS TABLABIN AGAIN SHARED
+ IF tcTableOrCursor = 'TABLE' THEN
+ USE (THIS.c_OutputFile) ALIAS TABLABIN AGAIN SHARED
+ ENDIF
ENDPROC
@@ -4896,8 +4941,13 @@ DEFINE CLASS c_conversor_prg_a_bin AS c_conversor_base
*******************************************************************************************************************
PROCEDURE createClasslib
+ LPARAMETERS tcTableOrCursor && 'TABLE' or 'CURSOR'
- CREATE TABLE (THIS.c_OutputFile) ;
+ LOCAL lcCursorName
+ tcTableOrCursor = EVL( tcTableOrCursor, 'TABLE' )
+ lcCursorName = ICASE( tcTableOrCursor = 'TABLE', THIS.c_OutputFile, 'TABLABIN' )
+
+ CREATE &tcTableOrCursor. (lcCursorName) ;
( PLATFORM C(8) ;
, UNIQUEID C(10) ;
, TIMESTAMP N(10) ;
@@ -4922,7 +4972,9 @@ DEFINE CLASS c_conversor_prg_a_bin AS c_conversor_base
, RESERVED8 M ;
, USER M )
- USE (THIS.c_OutputFile) ALIAS TABLABIN AGAIN SHARED
+ IF tcTableOrCursor = 'TABLE' THEN
+ USE (THIS.c_OutputFile) ALIAS TABLABIN AGAIN SHARED
+ ENDIF
ENDPROC
@@ -4951,8 +5003,13 @@ DEFINE CLASS c_conversor_prg_a_bin AS c_conversor_base
*******************************************************************************************************************
PROCEDURE createForm
+ LPARAMETERS tcTableOrCursor && 'TABLE' or 'CURSOR'
- CREATE TABLE (THIS.c_OutputFile) ;
+ LOCAL lcCursorName
+ tcTableOrCursor = EVL( tcTableOrCursor, 'TABLE' )
+ lcCursorName = ICASE( tcTableOrCursor = 'TABLE', THIS.c_OutputFile, 'TABLABIN' )
+
+ CREATE &tcTableOrCursor. (lcCursorName) ;
( PLATFORM C(8) ;
, UNIQUEID C(10) ;
, TIMESTAMP N(10) ;
@@ -4977,7 +5034,9 @@ DEFINE CLASS c_conversor_prg_a_bin AS c_conversor_base
, RESERVED8 M ;
, USER M )
- USE (THIS.c_OutputFile) ALIAS TABLABIN AGAIN SHARED
+ IF tcTableOrCursor = 'TABLE' THEN
+ USE (THIS.c_OutputFile) ALIAS TABLABIN AGAIN SHARED
+ ENDIF
ENDPROC
@@ -5006,8 +5065,13 @@ DEFINE CLASS c_conversor_prg_a_bin AS c_conversor_base
*******************************************************************************************************************
PROCEDURE createReport
+ LPARAMETERS tcTableOrCursor && 'TABLE' or 'CURSOR'
- CREATE TABLE (THIS.c_OutputFile) ;
+ LOCAL lcCursorName
+ tcTableOrCursor = EVL( tcTableOrCursor, 'TABLE' )
+ lcCursorName = ICASE( tcTableOrCursor = 'TABLE', THIS.c_OutputFile, 'TABLABIN' )
+
+ CREATE &tcTableOrCursor. (lcCursorName) ;
( 'PLATFORM' C(8) ;
, 'UNIQUEID' C(10) ;
, 'TIMESTAMP' N(10) ;
@@ -5084,15 +5148,22 @@ DEFINE CLASS c_conversor_prg_a_bin AS c_conversor_base
, 'SUPEXPR' M ;
, 'USER' M )
- USE (THIS.c_OutputFile) ALIAS TABLABIN AGAIN SHARED
+ IF tcTableOrCursor = 'TABLE' THEN
+ USE (THIS.c_OutputFile) ALIAS TABLABIN AGAIN SHARED
+ ENDIF
ENDPROC
*******************************************************************************************************************
PROCEDURE createMenu
+ LPARAMETERS tcTableOrCursor && 'TABLE' or 'CURSOR'
- CREATE TABLE (THIS.c_OutputFile) ;
+ LOCAL lcCursorName
+ tcTableOrCursor = EVL( tcTableOrCursor, 'TABLE' )
+ lcCursorName = ICASE( tcTableOrCursor = 'TABLE', THIS.c_OutputFile, 'TABLABIN' )
+
+ CREATE &tcTableOrCursor. (lcCursorName) ;
( 'OBJTYPE' Numeric(2) ;
, 'OBJCODE' Numeric(2) ;
, 'NAME' MEMO ;
@@ -5119,7 +5190,9 @@ DEFINE CLASS c_conversor_prg_a_bin AS c_conversor_base
, 'SYSRES' Numeric(1) ;
, 'RESNAME' MEMORY(4) )
- USE (THIS.c_OutputFile) ALIAS TABLABIN AGAIN SHARED
+ IF tcTableOrCursor = 'TABLE' THEN
+ USE (THIS.c_OutputFile) ALIAS TABLABIN AGAIN SHARED
+ ENDIF
ENDPROC
@@ -6531,7 +6604,7 @@ DEFINE CLASS c_conversor_prg_a_bin AS c_conversor_base
*******************************************************************************************************************
PROCEDURE evaluarDefinicionDeProcedure
- LPARAMETERS toClase, tnX, tc_Comentario, tcProcName, tcProcType, toObjeto
+ LPARAMETERS toClase, I, tc_Comentario, tcProcName, tcProcType, toObjeto
*--------------------------------------------------------------------------------------------------------------
#IF .F.
LOCAL toClase AS CL_CLASE OF 'FOXBIN2PRG.PRG' ;
@@ -6539,12 +6612,12 @@ DEFINE CLASS c_conversor_prg_a_bin AS c_conversor_base
#ENDIF
TRY
- LOCAL I, lcNombreObjeto, lnObjProc ;
+ LOCAL lcNombreObjeto, lnObjProc ;
, loProcedure AS CL_PROCEDURE OF 'FOXBIN2PRG.PRG'
IF EMPTY(toClase._Fin_Cab)
- toClase._Fin_Cab = tnX-1
- toClase._Ini_Cuerpo = tnX
+ toClase._Fin_Cab = I-1
+ toClase._Ini_Cuerpo = I
ENDIF
loProcedure = NULL
@@ -6552,6 +6625,7 @@ DEFINE CLASS c_conversor_prg_a_bin AS c_conversor_base
loProcedure._Nombre = tcProcName
loProcedure._ProcType = tcProcType
loProcedure._Comentario = tc_Comentario
+ loProcedure._Inicio = I
*-- Anoto en HiddenMethods y ProtectedMethods según corresponda
DO CASE
@@ -6579,6 +6653,12 @@ DEFINE CLASS c_conversor_prg_a_bin AS c_conversor_base
*-- Procedimiento de objeto
toObjeto = toClase._AddObjects( lnObjProc )
toObjeto.add_Procedure( loProcedure )
+
+ *-- Paso el log de errores
+ IF NOT EMPTY(toObjeto.c_TextErr) THEN
+ toClase.writeErrorLog(toObjeto.c_TextErr)
+ toObjeto.c_TextErr = ''
+ ENDIF
ENDIF
ELSE
*-- Procedimiento de clase
@@ -6595,7 +6675,7 @@ DEFINE CLASS c_conversor_prg_a_bin AS c_conversor_base
FINALLY
STORE NULL TO loProcedure
RELEASE loProcedure, I, lcNombreObjeto, lnObjProc ;
- , toClase, tnX, tc_Comentario, tcProcName, tcProcType, toObjeto
+ , toClase, tc_Comentario, tcProcName, tcProcType, toObjeto
ENDTRY
RETURN
@@ -6681,11 +6761,16 @@ DEFINE CLASS c_conversor_prg_a_bin AS c_conversor_base
*-- Puede haber varias clases definidas
* llEXTERNAL_CLASS_Completed = .T.
+ *-- Logueo los errores
+ IF NOT EMPTY(loClase.c_TextErr) THEN
+ .writeErrorLog( loClase.c_TextErr )
+ ENDIF
ENDCASE
ENDFOR
.verificar_CLASES_EXTERNAS( @toModulo, @toFoxBin2Prg )
+
ENDIF
ENDWITH && THIS
@@ -6951,11 +7036,14 @@ DEFINE CLASS c_conversor_prg_a_vcx AS c_conversor_prg_a_bin
*-- Identifico el inicio/fin de bloque, definición, cabecera y cuerpo de cada clase
.identificarBloquesDeCodigo( @laCodeLines, lnCodeLines, @laLineasExclusion, lnBloquesExclusion, @toModulo, @toFoxBin2Prg )
+ IF .l_Error
+ .writeLog( '*** ERRORS found - Generation Cancelled' )
+ EXIT
+ ENDIF
+
.AvanceDelProceso( 'Generating Binary...', 0, lnCodeLines, 1 )
toFoxBin2Prg.doBackup( .F., .T., '', '', '' )
-
.createClasslib()
-
.escribirArchivoBin( @toModulo, @toFoxBin2Prg )
ENDWITH && THIS
@@ -7298,12 +7386,14 @@ DEFINE CLASS c_conversor_prg_a_scx AS c_conversor_prg_a_bin
*-- Identifico el inicio/fin de bloque, definición, cabecera y cuerpo de cada clase
.identificarBloquesDeCodigo( @laCodeLines, lnCodeLines, @laLineasExclusion, lnBloquesExclusion, @toModulo, @toFoxBin2Prg )
+ IF .l_Error
+ .writeLog( '*** ERRORS found - Generation Cancelled' )
+ EXIT
+ ENDIF
+
.AvanceDelProceso( 'Generating Binary...', 0, lnCodeLines, 1 )
-
toFoxBin2Prg.doBackup( .F., .T., '', '', '' )
-
.createForm()
-
.escribirArchivoBin( @toModulo, @toFoxBin2Prg )
ENDWITH && THIS
@@ -7606,11 +7696,6 @@ DEFINE CLASS c_conversor_prg_a_pjx AS c_conversor_prg_a_bin
C_FB2PRG_CODE = FILETOSTR( .c_InputFile )
lnCodeLines = ALINES( laCodeLines, C_FB2PRG_CODE )
- toFoxBin2Prg.doBackup( .F., .T., '', '', '' )
-
- *-- Creo solo la cabecera del proyecto
- .createProject()
-
*-- Identifico los TEXT/ENDTEXT, #IF .F./#ENDIF
*.identificarBloquesDeExclusion( @laCodeLines, .F., @laLineasExclusion, @lnBloquesExclusion )
@@ -7618,7 +7703,14 @@ DEFINE CLASS c_conversor_prg_a_pjx AS c_conversor_prg_a_bin
.AvanceDelProceso( 'Identifying Code Blocks...', 1, 2, 1 )
.identificarBloquesDeCodigo( @laCodeLines, lnCodeLines, @laLineasExclusion, lnBloquesExclusion, @toProject )
+ IF .l_Error
+ .writeLog( '*** ERRORS found - Generation Cancelled' )
+ EXIT
+ ENDIF
+
.AvanceDelProceso( 'Generating Binary...', 2, 2, 1 )
+ toFoxBin2Prg.doBackup( .F., .T., '', '', '' )
+ .createProject()
.escribirArchivoBin( @toProject, toFoxBin2Prg )
ENDWITH && THIS
@@ -8404,16 +8496,21 @@ DEFINE CLASS c_conversor_prg_a_frx AS c_conversor_prg_a_bin
C_FB2PRG_CODE = FILETOSTR( .c_InputFile )
lnCodeLines = ALINES( laCodeLines, C_FB2PRG_CODE )
- toFoxBin2Prg.doBackup( .F., .T., '', '', '' )
-
- *-- Creo el reporte
- .createReport()
+ .createReport('CURSOR')
*-- Identifico el inicio/fin de bloque, definición, cabecera y cuerpo del reporte
.AvanceDelProceso( 'Identifying Code Blocks...', 1, 2, 1 )
.identificarBloquesDeCodigo( @laCodeLines, lnCodeLines, @laLineasExclusion, lnBloquesExclusion, @toReport )
+ USE IN (SELECT('TABLABIN'))
+
+ IF .l_Error
+ .writeLog( '*** ERRORS found - Generation Cancelled' )
+ EXIT
+ ENDIF
.AvanceDelProceso( 'Generating Binary...', 2, 2, 1 )
+ toFoxBin2Prg.doBackup( .F., .T., '', '', '' )
+ .createReport()
.escribirArchivoBin( @toReport, toFoxBin2Prg )
ENDWITH && THIS
@@ -8842,6 +8939,11 @@ DEFINE CLASS c_conversor_prg_a_dbf AS c_conversor_prg_a_bin
*-- Identifico el inicio/fin de bloque, definición, cabecera y cuerpo del reporte
.identificarBloquesDeCodigo( @laCodeLines, lnCodeLines, @laLineasExclusion, lnBloquesExclusion, @toTable )
+ IF .l_Error
+ .writeLog( '*** ERRORS found - Generation Cancelled' )
+ EXIT
+ ENDIF
+
.escribirArchivoBin( @toTable, @toFoxBin2Prg )
ENDWITH && THIS
@@ -9133,16 +9235,18 @@ DEFINE CLASS c_conversor_prg_a_dbc AS c_conversor_prg_a_bin
C_FB2PRG_CODE = FILETOSTR( .c_InputFile )
lnCodeLines = ALINES( laCodeLines, C_FB2PRG_CODE )
- toFoxBin2Prg.doBackup( .F., .T., '', '', '' )
-
- *-- Creo la tabla
- *.createTable()
-
*-- Identifico el inicio/fin de bloque, definición, cabecera y cuerpo del reporte
.AvanceDelProceso( 'Identifying Code Blocks...', 1, 2, 1 )
.identificarBloquesDeCodigo( @laCodeLines, lnCodeLines, @laLineasExclusion, lnBloquesExclusion, @toDatabase )
+ IF .l_Error
+ .writeLog( '*** ERRORS found - Generation Cancelled' )
+ EXIT
+ ENDIF
+
.AvanceDelProceso( 'Generating Binary...', 2, 2, 1 )
+ toFoxBin2Prg.doBackup( .F., .T., '', '', '' )
+ *.createTable()
.escribirArchivoBin( @toDatabase, toFoxBin2Prg )
ENDWITH && THIS
@@ -9313,16 +9417,21 @@ DEFINE CLASS c_conversor_prg_a_mnx AS c_conversor_prg_a_bin
C_FB2PRG_CODE = FILETOSTR( .c_InputFile )
lnCodeLines = ALINES( laCodeLines, C_FB2PRG_CODE )
- toFoxBin2Prg.doBackup( .F., .T., '', '', '' )
-
- *-- Creo la tabla
- .createMenu()
+ .createMenu('CURSOR')
*-- Identifico el inicio/fin de bloque, definición, cabecera y cuerpo del reporte
.AvanceDelProceso( 'Identifying Code Blocks...', 1, 2, 1 )
.identificarBloquesDeCodigo( @laCodeLines, lnCodeLines, @laLineasExclusion, lnBloquesExclusion, @toMenu )
+ USE IN (SELECT('TABLABIN'))
+
+ IF .l_Error
+ .writeLog( '*** ERRORS found - Generation Cancelled' )
+ EXIT
+ ENDIF
.AvanceDelProceso( 'Generating Binary...', 1, 2, 1 )
+ toFoxBin2Prg.doBackup( .F., .T., '', '', '' )
+ .createMenu()
.escribirArchivoBin( @toMenu )
ENDWITH && THIS
@@ -11631,6 +11740,7 @@ DEFINE CLASS c_conversor_vcx_a_prg AS c_conversor_bin_a_prg
lcExternalHeader = lcExternalHeader + CR_LF
ENDIF
+
*-- Genero el VC2
lnStep = lnStep + 1
.AvanceDelProceso( 'Writing VC2...', lnStep, lnClassTotal*lnStepCount, 1 )
@@ -11938,6 +12048,7 @@ DEFINE CLASS c_conversor_scx_a_prg AS c_conversor_bin_a_prg
lcExternalHeader = lcExternalHeader + CR_LF
ENDIF
+
*-- Genero el SC2
lnStep = lnStep + 1
.AvanceDelProceso( 'Writing SC2...', lnStep, lnClassTotal*lnStepCount, 1 )
@@ -13206,15 +13317,17 @@ DEFINE CLASS CL_CUS_BASE AS CUSTOM
, RESETTODEFAULT, SAVEASCLASS, SHOWWHATSTHIS, WRITEEXPRESSION, WRITEMETHOD
_MEMBERDATA = [] ;
+ + [] ;
+ [] ;
+ [] ;
+ [] ;
+ [] ;
+ [] ;
+ [] ;
+ + [] ;
+ []
-
+ c_TextErr = ''
l_Debug = .F.
@@ -13268,6 +13381,16 @@ DEFINE CLASS CL_CUS_BASE AS CUSTOM
ENDPROC
+ PROCEDURE writeErrorLog
+ LPARAMETERS tcText
+
+ TRY
+ THIS.c_TextErr = THIS.c_TextErr + EVL(tcText,'') + CR_LF
+ CATCH
+ ENDTRY
+ ENDPROC
+
+
ENDDEFINE
@@ -13472,9 +13595,11 @@ DEFINE CLASS CL_CLASE AS CL_CUS_BASE
+ [] ;
+ [] ;
+ [] ;
+ + [] ;
+ [] ;
+ [] ;
+ [] ;
+ + [] ;
+ [] ;
+ [] ;
+ [] ;
@@ -13524,8 +13649,9 @@ DEFINE CLASS CL_CLASE AS CL_CUS_BASE
+ []
- DIMENSION _Props[1,2], _AddObjects[1], _Procedures[1]
+ DIMENSION _Props[1,2], _AddObjects[1], _Procedures[1], _aProcNames[1]
l_ObjectMetadataInHeader = .F.
+ c_TextErr = ''
_Nombre = ''
_ObjName = ''
_Parent = ''
@@ -13582,9 +13708,17 @@ DEFINE CLASS CL_CLASE AS CL_CUS_BASE
#ENDIF
WITH THIS AS CL_CLASE OF 'FOXBIN2PRG.PRG'
+ *-- Verificación de Procedure repetido
+ IF ._Procedure_Count > 0 AND ASCAN( ._aProcNames, toProcedure._Nombre, 1, 0, 0, 1+2+4 ) > 0 THEN
+ .writeErrorLog( '* Duplicated Method "' + toProcedure._Nombre + '" of class "' ;
+ + ._Nombre + '" in line ' + TRANSFORM(toProcedure._Inicio) )
+ ENDIF
+
._Procedure_Count = ._Procedure_Count + 1
DIMENSION ._Procedures( ._Procedure_Count )
+ DIMENSION ._aProcNames( ._Procedure_Count )
._Procedures( ._Procedure_Count ) = toProcedure
+ ._aProcNames( ._Procedure_Count ) = toProcedure._Nombre
ENDWITH && THIS
ENDPROC
@@ -13631,6 +13765,7 @@ DEFINE CLASS CL_PROCEDURE AS CL_CUS_BASE
_MEMBERDATA = [] ;
+ [] ;
+ [] ;
+ + [] ;
+ [] ;
+ [] ;
+ [] ;
@@ -13642,6 +13777,7 @@ DEFINE CLASS CL_PROCEDURE AS CL_CUS_BASE
_ProcType = ''
_Comentario = ''
_ProcLine_Count = 0
+ _Inicio = 0
************************************************************************************************
@@ -13668,6 +13804,8 @@ DEFINE CLASS CL_OBJETO AS CL_CUS_BASE
_MEMBERDATA = [] ;
+ [] ;
+ [] ;
+ + [] ;
+ + [] ;
+ [] ;
+ [] ;
+ [] ;
@@ -13687,7 +13825,8 @@ DEFINE CLASS CL_OBJETO AS CL_CUS_BASE
+ [] ;
+ []
- DIMENSION _Props[1,1], _Procedures[1]
+ DIMENSION _Props[1,1], _Procedures[1], _aProcNames[1]
+ c_TextErr = ''
_Nombre = ''
_ObjName = ''
_Parent = ''
@@ -13718,9 +13857,17 @@ DEFINE CLASS CL_OBJETO AS CL_CUS_BASE
toProcedure._Nombre = SUBSTR( toProcedure._Nombre, AT( '.', toProcedure._Nombre, OCCURS( '.', ._Nombre) ) + 1 )
ENDIF
+ *-- Verificación de Procedure repetido
+ IF ._Procedure_Count > 0 AND ASCAN( ._aProcNames, toProcedure._Nombre, 1, 0, 0, 1+2+4 ) > 0 THEN
+ .writeErrorLog( '* Duplicated Method "' + toProcedure._Nombre + '" of object "' ;
+ + ._Nombre + '" of class "' + ._Parent + '" in line ' + TRANSFORM(toProcedure._Inicio) )
+ ENDIF
+
._Procedure_Count = ._Procedure_Count + 1
DIMENSION ._Procedures( ._Procedure_Count )
+ DIMENSION ._aProcNames( ._Procedure_Count )
._Procedures( ._Procedure_Count ) = toProcedure
+ ._aProcNames( ._Procedure_Count ) = toProcedure._Nombre
ENDWITH && THIS
ENDPROC