diff --git a/foxbin2prg.prg b/foxbin2prg.prg index 7d1b866..eeb9347 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 ) ) @@ -1966,7 +1972,6 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM ERROR 1799 CASE lnCodError > 0 - .l_Error = .T. .ejecutar_WriteErrorLog( @toEx ) ENDCASE ENDFOR @@ -2007,7 +2012,6 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM ERROR 1799 CASE lnCodError > 0 - .l_Error = .T. .ejecutar_WriteErrorLog( @toEx ) ENDCASE ENDFOR @@ -2174,7 +2178,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 +2205,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 +2220,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 +2234,7 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM ENDCASE CASE THIS.l_Debug - STRTOFILE( THIS.c_ErrorLog, lcErrorFile ) + THIS.writeErrorLog_Flush( ) ENDCASE @@ -2287,6 +2288,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 +2554,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 +2573,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 +2610,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 +2620,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 +2926,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 +2952,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 +3210,7 @@ DEFINE CLASS c_conversor_base AS SESSION + [] ; + [] ; + [] ; + + [] ; + [] ; + [] ; + [] ; @@ -3200,6 +3219,7 @@ DEFINE CLASS c_conversor_base AS SESSION + [] ; + [] ; + [] ; + + [] ; + [] ; + [] ; + [] ; @@ -3233,6 +3253,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 +4667,16 @@ DEFINE CLASS c_conversor_base AS SESSION ENDPROC + PROCEDURE writeErrorLog + LPARAMETERS tcText + + TRY + THIS.c_TextErr = THIS.c_TextErr + EVL(tcText,'') + CR_LF + CATCH + ENDTRY + ENDPROC + + ENDDEFINE @@ -6531,7 +6562,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 +6570,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 +6583,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 @@ -6595,7 +6627,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 +6713,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 @@ -13206,15 +13243,17 @@ DEFINE CLASS CL_CUS_BASE AS CUSTOM , RESETTODEFAULT, SAVEASCLASS, SHOWWHATSTHIS, WRITEEXPRESSION, WRITEMETHOD _MEMBERDATA = [] ; + + [] ; + [] ; + [] ; + [] ; + [] ; + [] ; + [] ; + + [] ; + [] - + c_TextErr = '' l_Debug = .F. @@ -13268,6 +13307,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 +13521,11 @@ DEFINE CLASS CL_CLASE AS CL_CUS_BASE + [] ; + [] ; + [] ; + + [] ; + [] ; + [] ; + [] ; + + [] ; + [] ; + [] ; + [] ; @@ -13524,8 +13575,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 +13634,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 +13691,7 @@ DEFINE CLASS CL_PROCEDURE AS CL_CUS_BASE _MEMBERDATA = [] ; + [] ; + [] ; + + [] ; + [] ; + [] ; + [] ; @@ -13642,6 +13703,7 @@ DEFINE CLASS CL_PROCEDURE AS CL_CUS_BASE _ProcType = '' _Comentario = '' _ProcLine_Count = 0 + _Inicio = 0 ************************************************************************************************