From cebecd2312f2b005ee61715f97e38d0fb6b17a4a Mon Sep 17 00:00:00 2001 From: fdbozzo Date: Thu, 18 Dec 2014 01:07:13 +0100 Subject: [PATCH 01/23] =?UTF-8?q?Changeset:=20568=20fdbozzo=20-=2015/12/20?= =?UTF-8?q?14=2018:44:18:=20-=20Nuevo=20mensaje=20interactivo=20para=20sel?= =?UTF-8?q?ecci=C3=B3n=20de=20conversi=C3=B3n=20de=20directorio=20-=20Nuev?= =?UTF-8?q?os=20mensajes=20traducidos=20-=20Arreglo=20de=20los=20scripts?= =?UTF-8?q?=20vbs?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Convert_VFP9_BIN_2_PRG.vbs | 23 +- Convert_VFP9_PRG_2_BIN.vbs | 23 +- VFP9_FoxBin2Prg.vbs | 23 +- foxbin2prg.prg | 660 +++++++++++++++++++++++-------------- 4 files changed, 453 insertions(+), 276 deletions(-) diff --git a/Convert_VFP9_BIN_2_PRG.vbs b/Convert_VFP9_BIN_2_PRG.vbs index 8a6bebf..cf356c6 100644 --- a/Convert_VFP9_BIN_2_PRG.vbs +++ b/Convert_VFP9_BIN_2_PRG.vbs @@ -13,7 +13,7 @@ ' - Ahora puede seleccionar archivos o directorios, pulsar click derecho y "Enviar a" FoxBin2prg para conversiones batch '--------------------------------------------------------------------------------------------------- Const ForReading = 1 -Dim WSHShell, FileSystemObject +Dim WSHShell, FileSystemObject, cEndOfProcessMsg, cWithErrorsMsg, cConvCancelByUserMsg Dim oVFP9, nExitCode, cEXETool, cCMD, nDebug, lcExt, foxbin2prg_cfg, aFiles(), nFile_Count Dim i, x, str_cfg, aConf, cErrMsg, cFlagGenerateLog, cFlagDontShowErrMsg, cFlagJustShowCall, cFlagRecompile, cFlagNoTimestamps, cErrFile Set WSHShell = WScript.CreateObject("WScript.Shell") @@ -111,20 +111,23 @@ Else Next If GetBit(nDebug, 4) Then - 'If oVFP9.Eval("oFoxBin2prg.l_Error") Then + cEndOfProcessMsg = oVFP9.Eval("_SCREEN.o_FoxBin2Prg_Lang.C_END_OF_PROCESS_LOC") + cWithErrorsMsg = oVFP9.Eval("_SCREEN.o_FoxBin2Prg_Lang.C_WITH_ERRORS_LOC") + cConvCancelByUserMsg = oVFP9.Eval("_SCREEN.o_FoxBin2Prg_Lang.C_CONVERSION_CANCELLED_BY_USER_LOC") + If nExitCode = 1799 Then - MsgBox "Conversion Cancelled by User!", 48, WScript.ScriptName - cErrFile = oVFP9.Eval("FORCEPATH('FoxBin2Prg.LOG',GETENV('TEMP') )") - oVFP9.DoCmd("STRTOFILE( oFoxBin2prg.c_ErrorLog, '" & cErrFile & "' )") + MsgBox cConvCancelByUserMsg & "!", 48+4096, WScript.ScriptName & " (" & oVFP9.Eval("oFoxBin2prg.c_FB2PRG_EXE_Version") & ")" + oVFP9.DoCmd("oFoxBin2prg.writeErrorLog_Flush()") + cErrFile = oVFP9.Eval("oFoxBin2prg.c_ErrorLogFile") WSHShell.run cErrFile - ElseIf nExitCode > 0 Then - MsgBox "End of Process! (with errors)", 48, WScript.ScriptName - cErrFile = oVFP9.Eval("FORCEPATH('FoxBin2Prg.LOG',GETENV('TEMP') )") - oVFP9.DoCmd("STRTOFILE( oFoxBin2prg.c_ErrorLog, '" & cErrFile & "' )") + ElseIf oVFP9.Eval("oFoxBin2prg.l_Error") Then + MsgBox cEndOfProcessMsg & "! (" & cWithErrorsMsg & ")", 48+4096, WScript.ScriptName & " (" & oVFP9.Eval("oFoxBin2prg.c_FB2PRG_EXE_Version") & ")" + oVFP9.DoCmd("oFoxBin2prg.writeErrorLog_Flush()") + cErrFile = oVFP9.Eval("oFoxBin2prg.c_ErrorLogFile") WSHShell.run cErrFile Else - MsgBox "End of Process!", 64, WScript.ScriptName + MsgBox cEndOfProcessMsg & "!", 64+4096, WScript.ScriptName & " (" & oVFP9.Eval("oFoxBin2prg.c_FB2PRG_EXE_Version") & ")" End If End If diff --git a/Convert_VFP9_PRG_2_BIN.vbs b/Convert_VFP9_PRG_2_BIN.vbs index 1790852..234b647 100644 --- a/Convert_VFP9_PRG_2_BIN.vbs +++ b/Convert_VFP9_PRG_2_BIN.vbs @@ -13,7 +13,7 @@ ' - Ahora puede seleccionar archivos o directorios, pulsar click derecho y "Enviar a" FoxBin2prg para conversiones batch '--------------------------------------------------------------------------------------------------- Const ForReading = 1 -Dim WSHShell, FileSystemObject +Dim WSHShell, FileSystemObject, cEndOfProcessMsg, cWithErrorsMsg, cConvCancelByUserMsg Dim oVFP9, nExitCode, cEXETool, cCMD, nDebug, lcExt, foxbin2prg_cfg, aFiles(), nFile_Count Dim i, x, str_cfg, aConf, cErrMsg, cFlagGenerateLog, cFlagDontShowErrMsg, cFlagJustShowCall, cFlagRecompile, cFlagNoTimestamps, cErrFile Set WSHShell = WScript.CreateObject("WScript.Shell") @@ -117,20 +117,23 @@ Else Next If GetBit(nDebug, 4) Then - 'If oVFP9.Eval("oFoxBin2prg.l_Error") Then + cEndOfProcessMsg = oVFP9.Eval("_SCREEN.o_FoxBin2Prg_Lang.C_END_OF_PROCESS_LOC") + cWithErrorsMsg = oVFP9.Eval("_SCREEN.o_FoxBin2Prg_Lang.C_WITH_ERRORS_LOC") + cConvCancelByUserMsg = oVFP9.Eval("_SCREEN.o_FoxBin2Prg_Lang.C_CONVERSION_CANCELLED_BY_USER_LOC") + If nExitCode = 1799 Then - MsgBox "Conversion Cancelled by User!", 48, WScript.ScriptName - cErrFile = oVFP9.Eval("FORCEPATH('FoxBin2Prg.LOG',GETENV('TEMP') )") - oVFP9.DoCmd("STRTOFILE( oFoxBin2prg.c_ErrorLog, '" & cErrFile & "' )") + MsgBox cConvCancelByUserMsg & "!", 48+4096, WScript.ScriptName & " (" & oVFP9.Eval("oFoxBin2prg.c_FB2PRG_EXE_Version") & ")" + oVFP9.DoCmd("oFoxBin2prg.writeErrorLog_Flush()") + cErrFile = oVFP9.Eval("oFoxBin2prg.c_ErrorLogFile") WSHShell.run cErrFile - ElseIf nExitCode > 0 Then - MsgBox "End of Process! (with errors)", 48, WScript.ScriptName - cErrFile = oVFP9.Eval("FORCEPATH('FoxBin2Prg.LOG',GETENV('TEMP') )") - oVFP9.DoCmd("STRTOFILE( oFoxBin2prg.c_ErrorLog, '" & cErrFile & "' )") + ElseIf oVFP9.Eval("oFoxBin2prg.l_Error") Then + MsgBox cEndOfProcessMsg & "! (" & cWithErrorsMsg & ")", 48+4096, WScript.ScriptName & " (" & oVFP9.Eval("oFoxBin2prg.c_FB2PRG_EXE_Version") & ")" + oVFP9.DoCmd("oFoxBin2prg.writeErrorLog_Flush()") + cErrFile = oVFP9.Eval("oFoxBin2prg.c_ErrorLogFile") WSHShell.run cErrFile Else - MsgBox "End of Process!", 64, WScript.ScriptName + MsgBox cEndOfProcessMsg & "!", 64+4096, WScript.ScriptName & " (" & oVFP9.Eval("oFoxBin2prg.c_FB2PRG_EXE_Version") & ")" End If End If diff --git a/VFP9_FoxBin2Prg.vbs b/VFP9_FoxBin2Prg.vbs index 5ef8430..932a5fe 100644 --- a/VFP9_FoxBin2Prg.vbs +++ b/VFP9_FoxBin2Prg.vbs @@ -13,7 +13,7 @@ ' en la carpeta "SendTo" del usuario ' - Ahora puede seleccionar archivos o directorios, pulsar click derecho y "Enviar a" FoxBin2prg para conversiones batch '--------------------------------------------------------------------------------------------------- -Dim WSHShell, FileSystemObject +Dim WSHShell, FileSystemObject, cEndOfProcessMsg, cWithErrorsMsg, cConvCancelByUserMsg Dim nExitCode, cEXETool, cEXETool2, nDebug Set wshShell = CreateObject( "WScript.Shell" ) Set FileSystemObject = WScript.CreateObject("Scripting.FileSystemObject") @@ -101,20 +101,23 @@ Else End If If GetBit(nDebug, 4) Then - 'If oVFP9.Eval("oFoxBin2prg.l_Error") Then + cEndOfProcessMsg = oVFP9.Eval("_SCREEN.o_FoxBin2Prg_Lang.C_END_OF_PROCESS_LOC") + cWithErrorsMsg = oVFP9.Eval("_SCREEN.o_FoxBin2Prg_Lang.C_WITH_ERRORS_LOC") + cConvCancelByUserMsg = oVFP9.Eval("_SCREEN.o_FoxBin2Prg_Lang.C_CONVERSION_CANCELLED_BY_USER_LOC") + If nExitCode = 1799 Then - MsgBox "Conversion Cancelled by User!", 48, WScript.ScriptName - cErrFile = oVFP9.Eval("FORCEPATH('FoxBin2Prg.LOG',GETENV('TEMP') )") - oVFP9.DoCmd("STRTOFILE( oFoxBin2prg.c_ErrorLog, '" & cErrFile & "' )") + MsgBox cConvCancelByUserMsg & "!", 48+4096, WScript.ScriptName & " (" & oVFP9.Eval("oFoxBin2prg.c_FB2PRG_EXE_Version") & ")" + oVFP9.DoCmd("oFoxBin2prg.writeErrorLog_Flush()") + cErrFile = oVFP9.Eval("oFoxBin2prg.c_ErrorLogFile") WSHShell.run cErrFile - ElseIf nExitCode > 0 Then - MsgBox "End of Process! (with errors)", 48, WScript.ScriptName - cErrFile = oVFP9.Eval("FORCEPATH('FoxBin2Prg.LOG',GETENV('TEMP') )") - oVFP9.DoCmd("STRTOFILE( oFoxBin2prg.c_ErrorLog, '" & cErrFile & "' )") + ElseIf oVFP9.Eval("oFoxBin2prg.l_Error") Then + MsgBox cEndOfProcessMsg & "! (" & cWithErrorsMsg & ")", 48+4096, WScript.ScriptName & " (" & oVFP9.Eval("oFoxBin2prg.c_FB2PRG_EXE_Version") & ")" + oVFP9.DoCmd("oFoxBin2prg.writeErrorLog_Flush()") + cErrFile = oVFP9.Eval("oFoxBin2prg.c_ErrorLogFile") WSHShell.run cErrFile Else - MsgBox "End of Process!", 64, WScript.ScriptName + MsgBox cEndOfProcessMsg & "!", 64+4096, WScript.ScriptName & " (" & oVFP9.Eval("oFoxBin2prg.c_FB2PRG_EXE_Version") & ")" End If End If diff --git a/foxbin2prg.prg b/foxbin2prg.prg index 1083630..d99f265 100644 --- a/foxbin2prg.prg +++ b/foxbin2prg.prg @@ -403,7 +403,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', 'BIN2PRG-INTERACTIVE', 'PRG2BIN-INTERACTIVE', 'INTERACTIVE') THEN +IF INLIST(UPPER(TRANSFORM(tc_InputFile)), 'BIN2PRG', 'PRG2BIN', 'BIN2PRG-SHOWMSG', 'PRG2BIN-SHOWMSG', 'SHOWMSG', 'INTERACTIVE') THEN pcParamX = tc_InputFile tc_InputFile = tcType tcType = pcParamX @@ -521,6 +521,7 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM + [] ; + [] ; + [] ; + + [] ; + [] ; + [] ; + [] ; @@ -562,7 +563,7 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM c_Language = '' && EN, FR, ES, DE c_loc_processing_file = '' c_loc_process_progress = '' - c_FB2PRG_EXE_Version = 0 + c_FB2PRG_EXE_Version = '' c_Foxbin2prg_FullPath = '' c_Foxbin2prg_ConfigFile = '' c_CurDir = '' @@ -605,7 +606,8 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM n_CFG_Actual = 0 n_ID = 0 n_FileHandle = 0 - n_ProcessedFiles = 0 + n_ProcessedFiles = 0 && Contador usado para los archivos file.class.ext + n_ProcessedFilesCount = 0 && Contador genérico de procesados o_Conversor = NULL o_Frm_Avance = NULL o_WSH = NULL @@ -669,7 +671,8 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM THIS.o_WSH = CREATEOBJECT("WScript.Shell") THIS.o_Configuration = CREATEOBJECT("COLLECTION") lc_Foxbin2prg_EXE = FORCEEXT( THIS.c_Foxbin2prg_FullPath, 'EXE' ) - THIS.c_FB2PRG_EXE_Version = IIF( AGETFILEVERSION( laValues, lc_Foxbin2prg_EXE ) = 0, TRANSFORM(THIS.n_FB2PRG_Version), laValues(4) ) + THIS.c_FB2PRG_EXE_Version = 'v' + IIF( AGETFILEVERSION( laValues, lc_Foxbin2prg_EXE ) = 0, TRANSFORM(THIS.n_FB2PRG_Version), laValues(4) ) + ADDPROPERTY(_SCREEN, 'c_FB2PRG_EXE_Version', THIS.c_FB2PRG_EXE_Version) ADDPROPERTY(_SCREEN, 'ExitCode', 0) THIS.writeLog( THIS.c_Foxbin2prg_FullPath + ' (EXE Version: ' + THIS.c_FB2PRG_EXE_Version + ')' ) THIS.EvaluarConfiguracion() @@ -1817,10 +1820,11 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM TRY LOCAL I, lcPath, lnCodError, lcFileSpec, lcFile, laFiles(1,5), laDirInfo(1,5) ; - , lnFileCount, lcErrorInfo, lcErrorFile, lnPCount, laParams(1) ; + , lnFileCount, lcErrorInfo, lcErrorFile, lnPCount, laParams(1), lnConversionOption ; , loEx AS EXCEPTION ; , loFSO AS Scripting.FileSystemObject ; - , loLang as CL_LANG OF 'FOXBIN2PRG.PRG' ; + , loLang AS CL_LANG OF 'FOXBIN2PRG.PRG' ; + , loFrm_Interactive AS frm_interactive OF 'FOXBIN2PRG.PRG' ; , loWSH AS WScript.Shell WITH THIS AS c_foxbin2prg OF 'FOXBIN2PRG.PRG' @@ -1876,9 +1880,14 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM .writeLog( ) *-- ARCHIVO DE CONFIGURACIÓN PRINCIPAL + IF INLIST( LOWER(tc_InputFile), LOWER([C:\DESA\foxbin2prg\pruebas varias\v1.19.36\FB2P_Ideas__RyanHarris\New (Option On)\myClasslib.frmbase.vc2]) ) + *fdb* + SET STEP ON + ENDIF + *IF NOT .l_ConfigEvaluated THEN .EvaluarConfiguracion( @tcDontShowProgress, @tcDontShowErrors, @tcNoTimestamps, @tcDebug, @tcRecompile, @tcBackupLevels ; - , @tcClearUniqueID, @tcOptimizeByFilestamp ) + , @tcClearUniqueID, @tcOptimizeByFilestamp, @tc_InputFile ) *ENDIF loLang = _SCREEN.o_FoxBin2Prg_Lang @@ -1897,20 +1906,46 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM OTHERWISE *-- EJECUCIÓN NORMAL + + IF '-SHOWMSG' $ ('-' + tcType) AND NOT '-BIN2PRG' $ ('-' + tcType) AND NOT '-PRG2BIN' $ ('-' + tcType) AND DIRECTORY(tc_InputFile) + *-- Se seleccionó un directorio y se puede elegir: Bin2Txt, Txt2Bin y Nada + loFrm_Interactive = CREATEOBJECT('frm_interactive') + loFrm_Interactive.Show() + READ EVENTS + lnConversionOption = loFrm_Interactive.opg_conversiontype.Value + loFrm_Interactive.Release() + loFrm_Interactive = NULL + + DO CASE + CASE lnConversionOption = 1 && Bin2Txt + tcType = tcType + '-BIN2PRG' + + CASE lnConversionOption = 2 && Txt2Bin + tcType = tcType + '-PRG2BIN' + + OTHERWISE && None + EXIT + ENDCASE + ENDIF + + IF .l_ShowProgress .cargar_frm_avance() ENDIF + *-- Evaluación de FileSpec de entrada DO CASE CASE '*' $ JUSTEXT( tc_InputFile ) OR '?' $ JUSTEXT( tc_InputFile ) IF .l_ShowErrors *MESSAGEBOX( 'No se admiten extensiones * o ? porque es peligroso (se pueden pisar binarios con archivo xx2 vacíos).', 0+48+4096, 'FOXBIN2PRG: ERROR!!', 60000 ) MESSAGEBOX( loLang.C_ASTERISK_EXT_NOT_ALLOWED_LOC, 0+48+4096, loLang.C_FOXBIN2PRG_ERROR_CAPTION_LOC, 60000 ) + EXIT ELSE ERROR loLang.C_ASTERISK_EXT_NOT_ALLOWED_LOC ENDIF + CASE '*' $ JUSTSTEM( tc_InputFile ) *-- SE QUIEREN TODOS LOS ARCHIVOS DE UNA EXTENSIÓN lcFileSpec = FULLPATH( tc_InputFile ) @@ -1937,248 +1972,262 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM .writeLog_Flush() ENDFOR + EXIT - CASE LEFT( tcType,7 ) == 'BIN2PRG' - IF NOT DIRECTORY(tc_InputFile) - ERROR 1963, (tc_InputFile) && Directoty is not found - ENDIF - *-- CONVERSION BIN2PRG DE UN DIRECTORIO Y SUBDIRECTORIOS + CASE '-BIN2PRG' $ ('-' + tcType) DO CASE - CASE .l_Recompile AND LEN(tcRecompile) > 3 AND DIRECTORY(tcRecompile) - CD (tcRecompile) - CASE .l_Recompile - CD (tc_InputFile) + CASE DIRECTORY(tc_InputFile) + *-- CONVERSION BIN2PRG DE UN DIRECTORIO Y SUBDIRECTORIOS + DO CASE + CASE .l_Recompile AND LEN(tcRecompile) > 3 AND DIRECTORY(tcRecompile) + CD (tcRecompile) + CASE .l_Recompile + CD (tc_InputFile) + ENDCASE + + .c_LogFile = ADDBS(tc_InputFile) + tcType + '.LOG' + + IF .l_Debug + ERASE ( .c_LogFile ) + ENDIF + + .ObtenerArchivosDelDirectorio( tc_InputFile, @laFiles, @lnFileCount ) + + FOR I = 1 TO lnFileCount + lcFile = laFiles(I) + + IF NOT .TieneSoporte_Bin2Prg( JUSTEXT(lcFile) ) OR NOT FILE(lcFile) THEN + LOOP + ENDIF + + .AvanceDelProceso( loLang.C_PROCESSING_LOC + ' ' + lcFile + '...', I, lnFileCount, 0 ) + lnCodError = .Convertir( lcFile, @toModulo, @toEx, .F., tcOriginalFileName ) + .writeLog_Flush() + + DO CASE + CASE lnCodError = 1799 && Conversion Cancelled + ERROR 1799 + + CASE lnCodError > 0 + .ejecutar_WriteErrorLog( @toEx ) + ENDCASE + ENDFOR + + .AvanceDelProceso( loLang.C_END_OF_PROCESS_LOC, lnFileCount, lnFileCount, 0 ) + EXIT + + CASE NOT .TieneSoporte_Bin2Prg( JUSTEXT(lcFile) ) OR NOT FILE(lcFile) + EXIT + ENDCASE - .c_LogFile = ADDBS(tc_InputFile) + tcType + '.LOG' - IF .l_Debug - ERASE ( .c_LogFile ) - ENDIF + CASE '-PRG2BIN' $ ('-' + tcType) + DO CASE + CASE DIRECTORY(tc_InputFile) + *-- CONVERSION PRG2BIN DE UN DIRECTORIO Y SUBDIRECTORIOS + DO CASE + CASE .l_Recompile AND LEN(tcRecompile) > 3 AND DIRECTORY(tcRecompile) + CD (tcRecompile) + CASE .l_Recompile + CD (tc_InputFile) + ENDCASE - .ObtenerArchivosDelDirectorio( tc_InputFile, @laFiles, @lnFileCount ) + .c_LogFile = ADDBS(tc_InputFile) + tcType + '.LOG' - FOR I = 1 TO lnFileCount - lcFile = laFiles(I) - - IF NOT .TieneSoporte_Bin2Prg( JUSTEXT(lcFile) ) OR NOT FILE(lcFile) THEN - LOOP + IF .l_Debug + ERASE ( .c_LogFile ) ENDIF - .AvanceDelProceso( loLang.C_PROCESSING_LOC + ' ' + lcFile + '...', I, lnFileCount, 0 ) - lnCodError = .Convertir( lcFile, @toModulo, @toEx, .F., tcOriginalFileName ) - .writeLog_Flush() + .ObtenerArchivosDelDirectorio( tc_InputFile, @laFiles, @lnFileCount ) - DO CASE - CASE lnCodError = 1799 && Conversion Cancelled - ERROR 1799 + FOR I = 1 TO lnFileCount + lcFile = laFiles(I) - CASE lnCodError > 0 - .ejecutar_WriteErrorLog( @toEx ) - ENDCASE - ENDFOR + IF NOT .TieneSoporte_Prg2Bin( JUSTEXT(lcFile) ) OR NOT FILE(lcFile) THEN + LOOP + ENDIF - .AvanceDelProceso( loLang.C_END_OF_PROCESS_LOC, lnFileCount, lnFileCount, 0 ) + .AvanceDelProceso( loLang.C_PROCESSING_LOC + ' ' + lcFile + '...', I, lnFileCount, 0 ) + lnCodError = .Convertir( lcFile, @toModulo, @toEx, .T., tcOriginalFileName ) + .writeLog_Flush() + DO CASE + CASE lnCodError = 1799 && Conversion Cancelled + ERROR 1799 + + CASE lnCodError > 0 + .ejecutar_WriteErrorLog( @toEx ) + ENDCASE + ENDFOR + + .AvanceDelProceso( loLang.C_END_OF_PROCESS_LOC, lnFileCount, lnFileCount, 0 ) + EXIT + + CASE NOT .TieneSoporte_Prg2Bin( JUSTEXT(lcFile) ) OR NOT FILE(lcFile) + EXIT - CASE LEFT( tcType,7 ) == 'PRG2BIN' AND DIRECTORY(tc_InputFile) - *-- CONVERSION PRG2BIN DE UN DIRECTORIO Y SUBDIRECTORIOS - DO CASE - CASE .l_Recompile AND LEN(tcRecompile) > 3 AND DIRECTORY(tcRecompile) - CD (tcRecompile) - CASE .l_Recompile - CD (tc_InputFile) ENDCASE - .c_LogFile = ADDBS(tc_InputFile) + tcType + '.LOG' - IF .l_Debug - ERASE ( .c_LogFile ) - ENDIF - - .ObtenerArchivosDelDirectorio( tc_InputFile, @laFiles, @lnFileCount ) - - FOR I = 1 TO lnFileCount - lcFile = laFiles(I) - - IF NOT .TieneSoporte_Prg2Bin( JUSTEXT(lcFile) ) OR NOT FILE(lcFile) THEN - LOOP - ENDIF - - .AvanceDelProceso( loLang.C_PROCESSING_LOC + ' ' + lcFile + '...', I, lnFileCount, 0 ) - lnCodError = .Convertir( lcFile, @toModulo, @toEx, .T., tcOriginalFileName ) - .writeLog_Flush() - - DO CASE - CASE lnCodError = 1799 && Conversion Cancelled - ERROR 1799 - - CASE lnCodError > 0 - .ejecutar_WriteErrorLog( @toEx ) - ENDCASE - ENDFOR - - .AvanceDelProceso( loLang.C_END_OF_PROCESS_LOC, lnFileCount, lnFileCount, 0 ) - - - OTHERWISE - *-- UN ARCHIVO INDIVIDUAL O CONSULTA DE SOPORTE DE ARCHIVO - IF LEN(EVL(tc_InputFile,'')) = 1 - *-- Consulta de soporte de conversión (compatibilidad con SourceSafe) - *-- SourceSafe consulta el tipo de soporte de cada archivo antes del Checkin/Checkout - *-- para saber si se puede hacer Diff y Merge. - *-- Para los códigos de tipo de archivo ver ayuda de "Type Property" - DO CASE - CASE tc_InputFile == FILETYPE_DATABASE - lnCodError = .DBC_Conversion_Support - - CASE tc_InputFile == FILETYPE_FREETABLE - lnCodError = .DBF_Conversion_Support - - CASE tc_InputFile == FILETYPE_FORM - lnCodError = .SCX_Conversion_Support - - CASE tc_InputFile == FILETYPE_LABEL - lnCodError = .LBX_Conversion_Support - - CASE tc_InputFile == FILETYPE_MENU - lnCodError = .MNX_Conversion_Support - - CASE tc_InputFile == FILETYPE_REPORT - lnCodError = .FRX_Conversion_Support - - CASE tc_InputFile == FILETYPE_CLASSLIB - lnCodError = .VCX_Conversion_Support - - CASE tc_InputFile $ FILETYPE_PROJECT && PJX (J no exite en FoxPro, es un valor inventado para evitar conflicto con los tipos existentes) - lnCodError = .PJX_Conversion_Support - - OTHERWISE - lnCodError = -1 - ENDCASE - - ELSE - - DO CASE - CASE UPPER( JUSTEXT( EVL(tc_InputFile,'') ) ) == 'PJX' AND EVL(tcType,'0') == '*' - *-- SE QUIEREN CONVERTIR A TEXTO TODOS LOS ARCHIVOS DE UN PROYECTO - lcFileSpec = FULLPATH( tc_InputFile ) - - DO CASE - CASE .l_Recompile AND LEN(tcRecompile) > 3 AND DIRECTORY(tcRecompile) - CD (tcRecompile) - CASE tcRecompile == '1' - CD (JUSTPATH(lcFileSpec)) - ENDCASE - - .c_LogFile = ADDBS( JUSTPATH( lcFileSpec ) ) + STRTRAN( JUSTFNAME( lcFileSpec ), '*', '_ALL' ) + '.LOG' - - IF .l_Debug - ERASE ( .c_LogFile ) - ENDIF - - SELECT 0 - USE (tc_InputFile) SHARED AGAIN NOUPDATE ALIAS TABLABIN - lnFileCount = 0 - - SCAN FOR NOT DELETED() - lnFileCount = lnFileCount + 1 - DIMENSION laFiles(lnFileCount,1) - laFiles(lnFileCount,1) = ADDBS( JUSTPATH( lcFileSpec ) ) + ALLTRIM( NAME, 0, ' ', CHR(0) ) - ENDSCAN - - USE IN (SELECT("TABLABIN")) - - *-- Luego convierto los archivos incluidos - FOR I = 1 TO lnFileCount - lcFile = laFiles(I,1) - .AvanceDelProceso( loLang.C_PROCESSING_LOC + ' ' + lcFile + '...', I, lnFileCount, 0 ) - - IF .TieneSoporte_Bin2Prg( UPPER(JUSTEXT(lcFile)) ) AND FILE( lcFile ) - lnCodError = .Convertir( lcFile, toModulo, @toEx, .T., tcOriginalFileName ) - .writeLog_Flush() - ENDIF - ENDFOR - - CASE UPPER( JUSTEXT( EVL(tc_InputFile,'') ) ) == 'PJ2' AND EVL(tcType,'0') == '*' - *-- SE QUIEREN CONVERTIR A BINARIO TODOS LOS ARCHIVOS DE UN PROYECTO - lcFileSpec = FULLPATH( tc_InputFile ) - - DO CASE - CASE .l_Recompile AND LEN(tcRecompile) > 3 AND DIRECTORY(tcRecompile) - CD (tcRecompile) - CASE tcRecompile == '1' - CD (JUSTPATH(lcFileSpec)) - ENDCASE - - .c_LogFile = ADDBS( JUSTPATH( lcFileSpec ) ) + STRTRAN( JUSTFNAME( lcFileSpec ), '*', '_ALL' ) + '.LOG' - - IF .l_Debug - ERASE ( .c_LogFile ) - ENDIF - - lnFileCount = ALINES( laFiles, STREXTRACT( FILETOSTR(tc_InputFile), C_BUILDPROJ_I, C_BUILDPROJ_F ), 1+4 ) - - FOR I = lnFileCount TO 1 STEP -1 - IF '.ADD(' $ laFiles(I) - laFiles(I) = ADDBS( JUSTPATH( lcFileSpec ) ) + STREXTRACT( laFiles(I), ".ADD('", "')" ) - laFiles(I) = FORCEEXT( laFiles(I), .Get_Ext2FromExt( UPPER(JUSTEXT(laFiles(I))) ) ) - ELSE - lnFileCount = lnFileCount - 1 - ADEL( laFiles, I ) - DIMENSION laFiles(lnFileCount) - ENDIF - ENDFOR - - *-- Luego convierto los archivos incluidos - FOR I = 1 TO lnFileCount - lcFile = laFiles(I) - .AvanceDelProceso( loLang.C_PROCESSING_LOC + ' ' + lcFile + '...', I, lnFileCount, 0 ) - - IF .TieneSoporte_Prg2Bin( UPPER(JUSTEXT(lcFile)) ) AND FILE( lcFile ) - lnCodError = .Convertir( lcFile, toModulo, @toEx, .T., tcOriginalFileName ) - .writeLog_Flush() - ENDIF - ENDFOR - - CASE EVL(tcType,'0') <> '0' AND EVL(tcTextName,'0') <> '0' - *-- Compatibilidad con SourceSafe - - IF NOT tlGenText - *-- COMPATIBILIDAD CON SOURCESAFE. 30/01/2014 - *-- Create BINARIO desde versión TEXTO - *-- Como el archivo de entrada siempre es el binario cuando se usa SCCAPI, - *-- para regenerar el binario (tlGenText=.F.) se debe usar como - *-- archivo de entrada tcTextName en su lugar. Aquí los intercambio. - tc_InputFile = tcTextName - .l_Recompile = .T. - ENDIF - ENDCASE - - IF FILE(tc_InputFile) - tc_InputFile = LOCFILE(tc_InputFile) - ERASE ( tc_InputFile + '.ERR' ) - - DO CASE - CASE .l_Recompile AND LEN(tcRecompile) > 3 AND DIRECTORY(tcRecompile) - CD (tcRecompile) - CASE tcRecompile == '1' - CD (JUSTPATH(tc_InputFile)) - ENDCASE - - .c_LogFile = tc_InputFile + '.LOG' - - 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 ) - ENDIF - ENDIF ENDCASE + *-- UN ARCHIVO INDIVIDUAL O CONSULTA DE SOPORTE DE ARCHIVO + IF LEN(EVL(tc_InputFile,'')) = 1 + *-- Consulta de soporte de conversión (compatibilidad con SourceSafe) + *-- SourceSafe consulta el tipo de soporte de cada archivo antes del Checkin/Checkout + *-- para saber si se puede hacer Diff y Merge. + *-- Para los códigos de tipo de archivo ver ayuda de "Type Property" + DO CASE + CASE tc_InputFile == FILETYPE_DATABASE + lnCodError = .DBC_Conversion_Support + + CASE tc_InputFile == FILETYPE_FREETABLE + lnCodError = .DBF_Conversion_Support + + CASE tc_InputFile == FILETYPE_FORM + lnCodError = .SCX_Conversion_Support + + CASE tc_InputFile == FILETYPE_LABEL + lnCodError = .LBX_Conversion_Support + + CASE tc_InputFile == FILETYPE_MENU + lnCodError = .MNX_Conversion_Support + + CASE tc_InputFile == FILETYPE_REPORT + lnCodError = .FRX_Conversion_Support + + CASE tc_InputFile == FILETYPE_CLASSLIB + lnCodError = .VCX_Conversion_Support + + CASE tc_InputFile $ FILETYPE_PROJECT && PJX (J no exite en FoxPro, es un valor inventado para evitar conflicto con los tipos existentes) + lnCodError = .PJX_Conversion_Support + + OTHERWISE + lnCodError = -1 + ENDCASE + + ELSE + + DO CASE + CASE UPPER( JUSTEXT( EVL(tc_InputFile,'') ) ) == 'PJX' AND EVL(tcType,'0') == '*' + *-- SE QUIEREN CONVERTIR A TEXTO TODOS LOS ARCHIVOS DE UN PROYECTO + lcFileSpec = FULLPATH( tc_InputFile ) + + DO CASE + CASE .l_Recompile AND LEN(tcRecompile) > 3 AND DIRECTORY(tcRecompile) + CD (tcRecompile) + CASE tcRecompile == '1' + CD (JUSTPATH(lcFileSpec)) + ENDCASE + + .c_LogFile = ADDBS( JUSTPATH( lcFileSpec ) ) + STRTRAN( JUSTFNAME( lcFileSpec ), '*', '_ALL' ) + '.LOG' + + IF .l_Debug + ERASE ( .c_LogFile ) + ENDIF + + SELECT 0 + USE (tc_InputFile) SHARED AGAIN NOUPDATE ALIAS TABLABIN + lnFileCount = 0 + + SCAN FOR NOT DELETED() + lnFileCount = lnFileCount + 1 + DIMENSION laFiles(lnFileCount,1) + laFiles(lnFileCount,1) = ADDBS( JUSTPATH( lcFileSpec ) ) + ALLTRIM( NAME, 0, ' ', CHR(0) ) + ENDSCAN + + USE IN (SELECT("TABLABIN")) + + *-- Luego convierto los archivos incluidos + FOR I = 1 TO lnFileCount + lcFile = laFiles(I,1) + .AvanceDelProceso( loLang.C_PROCESSING_LOC + ' ' + lcFile + '...', I, lnFileCount, 0 ) + + IF .TieneSoporte_Bin2Prg( UPPER(JUSTEXT(lcFile)) ) AND FILE( lcFile ) + lnCodError = .Convertir( lcFile, toModulo, @toEx, .T., tcOriginalFileName ) + .writeLog_Flush() + ENDIF + ENDFOR + + CASE UPPER( JUSTEXT( EVL(tc_InputFile,'') ) ) == 'PJ2' AND EVL(tcType,'0') == '*' + *-- SE QUIEREN CONVERTIR A BINARIO TODOS LOS ARCHIVOS DE UN PROYECTO + lcFileSpec = FULLPATH( tc_InputFile ) + + DO CASE + CASE .l_Recompile AND LEN(tcRecompile) > 3 AND DIRECTORY(tcRecompile) + CD (tcRecompile) + CASE tcRecompile == '1' + CD (JUSTPATH(lcFileSpec)) + ENDCASE + + .c_LogFile = ADDBS( JUSTPATH( lcFileSpec ) ) + STRTRAN( JUSTFNAME( lcFileSpec ), '*', '_ALL' ) + '.LOG' + + IF .l_Debug + ERASE ( .c_LogFile ) + ENDIF + + lnFileCount = ALINES( laFiles, STREXTRACT( FILETOSTR(tc_InputFile), C_BUILDPROJ_I, C_BUILDPROJ_F ), 1+4 ) + + FOR I = lnFileCount TO 1 STEP -1 + IF '.ADD(' $ laFiles(I) + laFiles(I) = ADDBS( JUSTPATH( lcFileSpec ) ) + STREXTRACT( laFiles(I), ".ADD('", "')" ) + laFiles(I) = FORCEEXT( laFiles(I), .Get_Ext2FromExt( UPPER(JUSTEXT(laFiles(I))) ) ) + ELSE + lnFileCount = lnFileCount - 1 + ADEL( laFiles, I ) + DIMENSION laFiles(lnFileCount) + ENDIF + ENDFOR + + *-- Luego convierto los archivos incluidos + FOR I = 1 TO lnFileCount + lcFile = laFiles(I) + .AvanceDelProceso( loLang.C_PROCESSING_LOC + ' ' + lcFile + '...', I, lnFileCount, 0 ) + + IF .TieneSoporte_Prg2Bin( UPPER(JUSTEXT(lcFile)) ) AND FILE( lcFile ) + lnCodError = .Convertir( lcFile, toModulo, @toEx, .T., tcOriginalFileName ) + .writeLog_Flush() + ENDIF + ENDFOR + + CASE EVL(tcType,'0') <> '0' AND EVL(tcTextName,'0') <> '0' + *-- Compatibilidad con SourceSafe + + IF NOT tlGenText + *-- COMPATIBILIDAD CON SOURCESAFE. 30/01/2014 + *-- Create BINARIO desde versión TEXTO + *-- Como el archivo de entrada siempre es el binario cuando se usa SCCAPI, + *-- para regenerar el binario (tlGenText=.F.) se debe usar como + *-- archivo de entrada tcTextName en su lugar. Aquí los intercambio. + tc_InputFile = tcTextName + .l_Recompile = .T. + ENDIF + ENDCASE + + IF FILE(tc_InputFile) + tc_InputFile = LOCFILE(tc_InputFile) + ERASE ( tc_InputFile + '.ERR' ) + + DO CASE + CASE .l_Recompile AND LEN(tcRecompile) > 3 AND DIRECTORY(tcRecompile) + CD (tcRecompile) + CASE tcRecompile == '1' + CD (JUSTPATH(tc_InputFile)) + ENDCASE + + .c_LogFile = tc_InputFile + '.LOG' + + 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 ) + ENDIF + ENDIF + ENDCASE ENDWITH && THIS @@ -2189,9 +2238,9 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM loLang = CREATEOBJECT("CL_LANG","EN") ENDIF - IF '-INTERACTIVE' $ ('-' + tcType) THEN + IF '-SHOWMSG' $ ('-' + tcType) THEN toEx.UserValue = 'tc_InputDir = [' + TRANSFORM(tc_InputFile) + ']' - THIS.l_ShowErrors = .F. && La opción "INTERACTIVE" muestra su propio mensaje + THIS.l_ShowErrors = .F. && La opción "SHOWMSG" muestra su propio mensaje ENDIF THIS.ejecutar_WriteErrorLog( @toEx, @lcErrorInfo ) @@ -2221,26 +2270,26 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM CD (JUSTPATH(THIS.c_CurDir)) DO CASE - CASE '-INTERACTIVE' $ ('-' + tcType) + CASE '-SHOWMSG' $ ('-' + tcType) DO CASE CASE lnCodError = 1799 && Conversion Cancelled - MESSAGEBOX( loLang.C_CONVERSION_CANCELLED_BY_USER_LOC + '!', 0+48+4096, 'FoxBin2Prg', 60000 ) + MESSAGEBOX( loLang.C_CONVERSION_CANCELLED_BY_USER_LOC + '! [p:' + TRANSFORM( THIS.n_ProcessedFilesCount ) + ']', 0+48+4096, 'FoxBin2Prg', 60000 ) 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 ) + MESSAGEBOX( loLang.C_END_OF_PROCESS_LOC + '! (' + loLang.C_WITH_ERRORS_LOC + ') [p:' + TRANSFORM( THIS.n_ProcessedFilesCount ) + ']', 0+48+4096, 'FoxBin2Prg', 60000 ) THIS.writeErrorLog_Flush( ) loWSH.Run( THIS.c_ErrorLogFile, 1, .F. ) OTHERWISE - MESSAGEBOX( loLang.C_END_OF_PROCESS_LOC, 0+64+4096, 'FoxBin2Prg', 60000 ) + MESSAGEBOX( loLang.C_END_OF_PROCESS_LOC + ' [p:' + TRANSFORM( THIS.n_ProcessedFilesCount ) + ']', 0+64+4096, 'FoxBin2Prg', 60000 ) ENDCASE - CASE THIS.l_Debug - THIS.writeErrorLog_Flush( ) + *CASE THIS.l_Debug + * THIS.writeErrorLog_Flush( ) ENDCASE @@ -2580,6 +2629,7 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM ENDIF loConversor.Convertir( @toModulo, .F., THIS ) + .n_ProcessedFilesCount = .n_ProcessedFilesCount + 1 .writeLog() .writeLog(.o_Conversor.c_TextLog) && Recojo el LOG que haya generado el conversor @@ -3158,7 +3208,7 @@ DEFINE CLASS frm_avance AS FORM PROCEDURE Init LOCAL loLang as CL_LANG OF 'FOXBIN2PRG.PRG' loLang = _SCREEN.o_FoxBin2Prg_Lang - THIS.CAPTION = 'FoxBin2Prg - ' + loLang.C_PROCESS_PROGRESS_LOC + ' (' + loLang.C_PRESS_ESC_TO_CANCEL + ')' + THIS.CAPTION = 'FoxBin2Prg ' + _SCREEN.c_FB2PRG_EXE_Version + ' - ' + loLang.C_PROCESS_PROGRESS_LOC + ' (' + loLang.C_PRESS_ESC_TO_CANCEL + ')' THIS.nValue = 0 THIS.nValue2 = 0 ENDPROC @@ -3182,6 +3232,82 @@ DEFINE CLASS frm_avance AS FORM ENDDEFINE +******************************************************************************************************************* +DEFINE CLASS frm_interactive AS form + Height = 102 + Width = 380 + ShowWindow = 2 + DoCreate = .T. + AutoCenter = .T. + BorderStyle = 2 + Caption = 'FoxBin2Prg ' + _SCREEN.c_FB2PRG_EXE_Version + ' - ' + _SCREEN.o_FoxBin2Prg_Lang.C_CONVERT_FOLDER_LOC + ControlBox = .F. + AlwaysOnTop = .T. + BackColor = RGB(255,255,255) + Name = "frm_interactive" + + + ADD OBJECT lbl_title AS label WITH ; + WordWrap = .T., ; + Alignment = 2, ; + BackStyle = 0, ; + Caption = _SCREEN.o_FoxBin2Prg_Lang.C_CONVERT_FOLDER_QUESTION_LOC, ; + Height = 36, ; + Left = 12, ; + Top = 16, ; + Width = 356, ; + Name = "lbl_Title" + + + ADD OBJECT opg_conversiontype AS optiongroup WITH ; + ButtonCount = 3, ; + BackStyle = 0, ; + BorderStyle = 0, ; + Value = 3, ; + Height = 28, ; + Left = 40, ; + Top = 64, ; + Width = 300, ; + Name = "opg_ConversionType", ; + Option1.Caption = _SCREEN.o_FoxBin2Prg_Lang.C_CONVERT_FOLDER_BIN2PRG_LOC, ; + Option1.Value = 1, ; + Option1.Height = 27, ; + Option1.Left = 0, ; + Option1.Style = 1, ; + Option1.Top = 0, ; + Option1.Width = 92, ; + Option1.Name = "opt_Bin2Prg", ; + Option2.Caption = _SCREEN.o_FoxBin2Prg_Lang.C_CONVERT_FOLDER_PRG2BIN_LOC, ; + Option2.Height = 27, ; + Option2.Left = 104, ; + Option2.Style = 1, ; + Option2.Top = 0, ; + Option2.Width = 92, ; + Option2.Name = "opt_Prg2Bin", ; + Option3.Caption = _SCREEN.o_FoxBin2Prg_Lang.C_CONVERT_FOLDER_NONE_LOC, ; + Option3.Height = 27, ; + Option3.Left = 208, ; + Option3.Style = 1, ; + Option3.Top = 0, ; + Option3.Width = 92, ; + Option3.Name = "opt_None" + + PROCEDURE Init + *LOCAL loLang as CL_LANG OF 'FOXBIN2PRG.PRG' + *loLang = _SCREEN.o_FoxBin2Prg_Lang + ENDPROC + + + PROCEDURE opg_conversiontype.InteractiveChange + *-- Selección + THISFORM.Hide() + CLEAR EVENTS + ENDPROC + + +ENDDEFINE + + ******************************************************************************************************************* DEFINE CLASS c_conversor_base AS SESSION #IF .F. @@ -6983,13 +7109,15 @@ DEFINE CLASS c_conversor_prg_a_vcx AS c_conversor_prg_a_bin TRY LOCAL lnCodError, laCodeLines(1), lnCodeLines, lcInputFile, lcInputFile_Class, lnFileCount, laFiles(1,5) ; - , laLineasExclusion(1), lnBloquesExclusion, I + , laLineasExclusion(1), lnBloquesExclusion, I ; + , loLang as CL_LANG OF 'FOXBIN2PRG.PRG' WITH THIS AS c_conversor_prg_a_vcx OF 'FOXBIN2PRG.PRG' STORE 0 TO lnCodError, lnCodeLines STORE '' TO C_FB2PRG_CODE STORE NULL TO toModulo + loLang = _SCREEN.o_FoxBin2Prg_Lang toModulo = CREATEOBJECT('CL_MODULO') IF toFoxBin2Prg.l_UseClassPerFile AND toFoxBin2Prg.l_RedirectClassPerFileToMain @@ -7012,9 +7140,12 @@ DEFINE CLASS c_conversor_prg_a_vcx AS c_conversor_prg_a_bin *-- Verificación de las Clases, si son Externas y se indicó chequearlas IF toFoxBin2Prg.l_ClassPerFileCheck AND ASCAN( toModulo._ExternalClasses , JUSTEXT( JUSTSTEM( lcInputFile_Class ) ), 1, 0, 1, 1+2+4 ) = 0 + .writeLog( C_TAB + '- ' + loLang.C_EXCLUDING_CLASS_LOC + ' ' + JUSTFNAME( lcInputFile_Class ) ) + .writeErrorLog( C_TAB + '- ' + loLang.C_WARNING_LOC + ' ' + loLang.C_EXCLUDING_CLASS_LOC + ' ' + JUSTFNAME( lcInputFile_Class ) ) LOOP && Salteo esta clase ENDIF + .writeLog( C_TAB + '+ ' + loLang.C_INCLUDING_CLASS_LOC + ' ' + JUSTFNAME( lcInputFile_Class ) ) toFoxBin2Prg.normalizarCapitalizacionArchivos( .T., lcInputFile_Class ) C_FB2PRG_CODE = C_FB2PRG_CODE + FILETOSTR( lcInputFile_Class ) ENDFOR @@ -7333,13 +7464,15 @@ DEFINE CLASS c_conversor_prg_a_scx AS c_conversor_prg_a_bin TRY LOCAL lnCodError, laCodeLines(1), lnCodeLines, lcInputFile, lcInputFile_Class, lnFileCount, laFiles(1,5) ; - , laLineasExclusion(1), lnBloquesExclusion, I + , laLineasExclusion(1), lnBloquesExclusion, I ; + , loLang as CL_LANG OF 'FOXBIN2PRG.PRG' - WITH THIS AS c_conversor_prg_a_scx OF 'FOXBIN2PRG.PRG' + WITH THIS AS c_conversor_prg_a_vcx OF 'FOXBIN2PRG.PRG' STORE 0 TO lnCodError, lnCodeLines STORE '' TO C_FB2PRG_CODE STORE NULL TO toModulo + loLang = _SCREEN.o_FoxBin2Prg_Lang toModulo = CREATEOBJECT('CL_MODULO') IF toFoxBin2Prg.l_UseClassPerFile AND toFoxBin2Prg.l_RedirectClassPerFileToMain @@ -7362,9 +7495,12 @@ DEFINE CLASS c_conversor_prg_a_scx AS c_conversor_prg_a_bin *-- Verificación de las Clases, si son Externas y se indicó chequearlas IF toFoxBin2Prg.l_ClassPerFileCheck AND ASCAN( toModulo._ExternalClasses , JUSTEXT( JUSTSTEM( lcInputFile_Class ) ), 1, 0, 1, 1+2+4 ) = 0 + .writeLog( C_TAB + '- ' + loLang.C_EXCLUDING_CLASS_LOC + ' ' + JUSTFNAME( lcInputFile_Class ) ) + .writeErrorLog( C_TAB + '- ' + loLang.C_WARNING_LOC + ' ' + loLang.C_EXCLUDING_CLASS_LOC + ' ' + JUSTFNAME( lcInputFile_Class ) ) LOOP && Salteo esta clase ENDIF + .writeLog( C_TAB + '+ ' + loLang.C_INCLUDING_CLASS_LOC + ' ' + JUSTFNAME( lcInputFile_Class ) ) toFoxBin2Prg.normalizarCapitalizacionArchivos( .T., lcInputFile_Class ) C_FB2PRG_CODE = C_FB2PRG_CODE + FILETOSTR( lcInputFile_Class ) ENDFOR @@ -21756,6 +21892,11 @@ DEFINE CLASS CL_LANG AS Custom C_CANT_GENERATE_FILE_BECAUSE_IT_IS_READONLY_LOC = "Cannot generate file [<>] because it is ReadOnly" C_CONFIGFILE_LOC = "Using configuration file:" C_CONVERSION_CANCELLED_BY_USER_LOC = "Conversion Cancelled by the user" + C_CONVERT_FOLDER_LOC = "Convert Folder" + C_CONVERT_FOLDER_BIN2PRG_LOC = "Binary to Text" + C_CONVERT_FOLDER_PRG2BIN_LOC = "Text to Binary" + C_CONVERT_FOLDER_NONE_LOC = "None" + C_CONVERT_FOLDER_QUESTION_LOC = "What conversion should be performed on the files of this folder?" C_CONVERTER_UNLOAD_LOC = "Converter unload" C_CONVERTING_FILE_LOC = "Converting file" C_DATA_ERROR_CANT_PARSE_UNPAIRING_DOUBLE_QUOTES_LOC = "Data Error: Can't parse because of unpaired double-quotes on line <>" @@ -21763,6 +21904,7 @@ DEFINE CLASS CL_LANG AS Custom C_ENDDEFINE_MARKER_NOT_FOUND_LOC = "Cannot find end marker [ENDDEFINE] of line <> for ID [<>]" C_END_MARKER_NOT_FOUND_LOC = "Cannot find end marker [<>] that closes start marker [<>] on line <>" C_END_OF_PROCESS_LOC = "End of Process" + C_EXCLUDING_CLASS_LOC = "Excluding class" C_EXTENSION_RECONFIGURATION_LOC = "Extension Reconfiguration:" C_EXTERNAL_CLASS_COUNT_DOES_NOT_MATCH_FOUND_CLASSES_LOC = "External class count (<>) does not match found classes (<>) for file [<>]" C_EXTERNAL_CLASS_NAME_DOES_NOT_FOUND_LOC = "External class [<>] is not found in file [<>]" @@ -21781,6 +21923,7 @@ DEFINE CLASS CL_LANG AS Custom C_FOXBIN2PRG_JUST_VFP_9_LOC = "FOXBIN2PRG is only for Visual FoxPro 9.0!" C_FOXBIN2PRG_WARN_CAPTION_LOC = "FOXBIN2PRG: WARNING!" C_GENERATED_FILE_SIZE_LOC = "Generated file size" + C_INCLUDING_CLASS_LOC = "Including class" C_LANGUAGE_LOC = "EN" C_MENU_NOT_IN_VFP9_FORMAT_LOC = "Menu [<>] is NOT in VFP 9 Format! - Please convert to VFP 9 with MODIFY MENU '<>'" C_NAMES_CAPITALIZATION_PROGRAM_FOUND_LOC = "* Names capitalization program [<>] found" @@ -21801,7 +21944,8 @@ DEFINE CLASS CL_LANG AS Custom C_STRUCTURE_NESTING_ERROR_ENDPROC_EXPECTED_LOC = "Nesting structure error. ENDPROC expected but found ENDDEFINE on class <> (<>), line <> of file <>" C_STRUCTURE_NESTING_ERROR_ENDPROC_EXPECTED_2_LOC = "Nesting structure error. ENDPROC expected but found ENDDEFINE on class <> (<>.<>), line <> of file <>" C_UNKNOWN_CLASS_NAME_LOC = "Unknown class [<>]" - C_WARN_TABLE_ALIAS_ON_INDEX_EXPRESSION_LOC = "WARNING!!" + CR_LF+ "MAKE SURE YOU ARE NOT USING A TABLE ALIAS ON INDEX KEY EXPRESSIONS!! (ex: index on <>.campo tag keyname)" + C_WARNING_LOC = "WARNING!" + C_WARN_TABLE_ALIAS_ON_INDEX_EXPRESSION_LOC = "WARNING!" + CR_LF+ "MAKE SURE YOU ARE NOT USING A TABLE ALIAS ON INDEX KEY EXPRESSIONS!! (ex: index on <>.campo tag keyname)" C_WITH_ERRORS_LOC = "with errors" @@ -21879,6 +22023,11 @@ DEFINE CLASS CL_LANG AS Custom .C_CANT_GENERATE_FILE_BECAUSE_IT_IS_READONLY_LOC = "Vous ne pouvez pas générer un fichier [<>] car il est en lecture seule" .C_CONFIGFILE_LOC = "Utilisation du fichier de configuration:" .C_CONVERSION_CANCELLED_BY_USER_LOC = "Conversion Annulé par l'utilisateur" + .C_CONVERT_FOLDER_LOC = "Convertir un Dossier" + .C_CONVERT_FOLDER_BIN2PRG_LOC = "Binaire en Texte" + .C_CONVERT_FOLDER_PRG2BIN_LOC = "Texte à Binaire" + .C_CONVERT_FOLDER_NONE_LOC = "Aucun" + .C_CONVERT_FOLDER_QUESTION_LOC = "Que la conversion doit être effectuée sur les fichiers de ce dossier?" .C_CONVERTER_UNLOAD_LOC = "Convertisseur déchargement" .C_CONVERTING_FILE_LOC = "Conversion de fichiers" .C_DATA_ERROR_CANT_PARSE_UNPAIRING_DOUBLE_QUOTES_LOC = "Erreur de données: ne peut pas analyser en raison de guillemets non appariés en ligne <>" @@ -21886,6 +22035,7 @@ DEFINE CLASS CL_LANG AS Custom .C_ENDDEFINE_MARKER_NOT_FOUND_LOC = "Vous ne trouvez pas marqueur de fin [ENDDEFINE] de la ligne <> ID [<>]" .C_END_MARKER_NOT_FOUND_LOC = "Vous ne trouvez pas fin marqueur [<>] qui ferme marqueur de début [<>] en ligne <>" .C_END_OF_PROCESS_LOC = "Fin du processus" + .C_EXCLUDING_CLASS_LOC = "Exclusing class" .C_EXTENSION_RECONFIGURATION_LOC = "Extension Reconfiguration:" .C_EXTERNAL_CLASS_COUNT_DOES_NOT_MATCH_FOUND_CLASSES_LOC = "Nombre de classe externe (<>) ne correspond pas classes trouvées (<>) pour le fichier [<>]" .C_EXTERNAL_CLASS_NAME_DOES_NOT_FOUND_LOC = "Classe externe [<>] est introuvable dans le fichier [<>]" @@ -21904,6 +22054,7 @@ DEFINE CLASS CL_LANG AS Custom .C_FOXBIN2PRG_JUST_VFP_9_LOC = "FOXBIN2PRG est seulement pour Visual FoxPro 9.0!" .C_FOXBIN2PRG_WARN_CAPTION_LOC = "FOXBIN2PRG: AVERTISSEMENT!" .C_GENERATED_FILE_SIZE_LOC = "Taille du fichier généré" + .C_INCLUDING_CLASS_LOC = "Including class" .C_LANGUAGE_LOC = "FR" .C_MENU_NOT_IN_VFP9_FORMAT_LOC = "Menu [<>] ne est pas dans VFP 9 Format! - Se il vous plaît se convertir à VFP 9 avec MODIFY MENU '<>'" .C_NAMES_CAPITALIZATION_PROGRAM_FOUND_LOC = "* Programme des noms de capitalisation [<>] trouvé" @@ -21924,7 +22075,8 @@ DEFINE CLASS CL_LANG AS Custom .C_STRUCTURE_NESTING_ERROR_ENDPROC_EXPECTED_LOC = "Nesting erreur de structure. ENDPROC prévu, mais a trouvé ENDDEFINE sur la classe <> (<>), ligne <> du fichier <>" .C_STRUCTURE_NESTING_ERROR_ENDPROC_EXPECTED_2_LOC = "Nesting erreur de structure. ENDPROC attendue, mais ENDDEFINE sur la classe <> (<>.<>), ligne <> du fichier <>" .C_UNKNOWN_CLASS_NAME_LOC = "Classe inconnue[<>]" - .C_WARN_TABLE_ALIAS_ON_INDEX_EXPRESSION_LOC = "AVERTISSEMENT!!" + CR_LF+ "ASSUREZ VOUS NE UTILISEZ PAS UN ALIAS DE TABLE SUR LES EXPRESSIONS INDEX CLÉS!! (exemple: index on <>.campo tag keyname)" + .C_WARNING_LOC = "AVERTISSEMENT!" + .C_WARN_TABLE_ALIAS_ON_INDEX_EXPRESSION_LOC = "AVERTISSEMENT!" + CR_LF+ "ASSUREZ VOUS NE UTILISEZ PAS UN ALIAS DE TABLE SUR LES EXPRESSIONS INDEX CLÉS!! (exemple: index on <>.campo tag keyname)" .C_WITH_ERRORS_LOC = "avec des erreurs" CASE INLIST(tcLanguage, '34', 'ES') && Spanish (Español) @@ -21937,14 +22089,20 @@ DEFINE CLASS CL_LANG AS Custom .C_BACKUP_OF_LOC = "Haciendo Backup de: " .C_CANT_GENERATE_FILE_BECAUSE_IT_IS_READONLY_LOC = "No se puede generar el archivo [<>] porque es ReadOnly" .C_CONFIGFILE_LOC = "Usando archivo de configuración:" + .C_CONVERSION_CANCELLED_BY_USER_LOC = "Conversión Cancelada por el usuario" + .C_CONVERT_FOLDER_LOC = "Convertir Carpeta" + .C_CONVERT_FOLDER_BIN2PRG_LOC = "Binario a Texto" + .C_CONVERT_FOLDER_PRG2BIN_LOC = "Texto a Binario" + .C_CONVERT_FOLDER_NONE_LOC = "Ninguna" + .C_CONVERT_FOLDER_QUESTION_LOC = "¿Qué tipo de conversión se debe hacer en esta carpeta?" .C_CONVERTER_UNLOAD_LOC = "Descarga del conversor" .C_CONVERTING_FILE_LOC = "Convirtiendo archivo" - .C_CONVERSION_CANCELLED_BY_USER_LOC = "Conversión Cancelada por el usuario" .C_DATA_ERROR_CANT_PARSE_UNPAIRING_DOUBLE_QUOTES_LOC = "Error de datos: No se puede parsear porque las comillas no son pares en la línea <>" .C_DUPLICATED_FILE_LOC = "Archivo duplicado" .C_ENDDEFINE_MARKER_NOT_FOUND_LOC = "No se ha encontrado el marcador de fin [ENDDEFINE] de la línea <> para el identificador [<>]" .C_END_MARKER_NOT_FOUND_LOC = "No se ha encontrado el marcador de fin [<>] que cierra al marcador de inicio [<>] de la línea <>" .C_END_OF_PROCESS_LOC = "Fin del Proceso" + .C_EXCLUDING_CLASS_LOC = "Excluyendo clase" .C_EXTENSION_RECONFIGURATION_LOC = "Reconfiguración de extensión:" .C_EXTERNAL_CLASS_COUNT_DOES_NOT_MATCH_FOUND_CLASSES_LOC = "El conteo de clases externas (<>) no coincide con la cantidad encontrada (<>) para el archivo [<>]" .C_EXTERNAL_CLASS_NAME_DOES_NOT_FOUND_LOC = "No se ha encontrado la clase externa [<>] del archivo [<>]" @@ -21964,6 +22122,7 @@ DEFINE CLASS CL_LANG AS Custom .C_FOXBIN2PRG_WARN_CAPTION_LOC = "FOXBIN2PRG: ¡ATENCIÓN!" .C_GENERATED_FILE_SIZE_LOC = "Tamaño del archivo generado" .C_MENU_NOT_IN_VFP9_FORMAT_LOC = "El Menú [<>] NO está en formato VFP 9! - Por favor convertirlo a VFP 9 con MODIFY MENU '<>'" + .C_INCLUDING_CLASS_LOC = "Incluyendo clase" .C_LANGUAGE_LOC = "ES" .C_NAMES_CAPITALIZATION_PROGRAM_FOUND_LOC = "* Se ha encontrado el programa de capitalización de nombres [<>]" .C_NAMES_CAPITALIZATION_PROGRAM_NOT_FOUND_LOC = "* No se ha encontrado el programa de capitalización de nombres [<>]" @@ -21983,7 +22142,8 @@ DEFINE CLASS CL_LANG AS Custom .C_STRUCTURE_NESTING_ERROR_ENDPROC_EXPECTED_LOC = "Error de anidamiento de estructuras. Se esperaba ENDPROC pero se encontró ENDDEFINE en la clase <> (<>), línea <> del archivo <>" .C_STRUCTURE_NESTING_ERROR_ENDPROC_EXPECTED_2_LOC = "Error de anidamiento de estructuras. Se esperaba ENDPROC pero se encontró ENDDEFINE en la clase <> (<>.<>), línea <> del archivo <>" .C_UNKNOWN_CLASS_NAME_LOC = "Clase [<>] desconocida" - .C_WARN_TABLE_ALIAS_ON_INDEX_EXPRESSION_LOC = "¡¡ATENCIÓN!!" + CR_LF+ "ASEGÚRESE DE QUE NO ESTÁ USANDO UN ALIAS DE TABLA EN LAS EXPRESIONES DE LOS ÍNDICES!! (ej: index on <>.campo tag nombreclave)" + .C_WARNING_LOC = "¡ATENCIÓN!" + .C_WARN_TABLE_ALIAS_ON_INDEX_EXPRESSION_LOC = "¡ATENCIÓN!" + CR_LF+ "ASEGÚRESE DE QUE NO ESTÁ USANDO UN ALIAS DE TABLA EN LAS EXPRESIONES DE LOS ÍNDICES!! (ej: index on <>.campo tag nombreclave)" .C_WITH_ERRORS_LOC = "con errores" CASE INLIST(tcLanguage, '49', 'DE') && German (Alemán) @@ -21997,6 +22157,11 @@ DEFINE CLASS CL_LANG AS Custom .C_CANT_GENERATE_FILE_BECAUSE_IT_IS_READONLY_LOC = "Kann Datei [<>] nicht generieren da sie Schreibgeschützt ist" .C_CONFIGFILE_LOC = "Benutze Konfigurationsdatei:" .C_CONVERSION_CANCELLED_BY_USER_LOC = "Konvertierung durch den Benutzer abgebrochen" + .C_CONVERT_FOLDER_LOC = "Konvertieren Verzeichnis" + .C_CONVERT_FOLDER_BIN2PRG_LOC = "Binär zu Text" + .C_CONVERT_FOLDER_PRG2BIN_LOC = "Text zu Binär" + .C_CONVERT_FOLDER_NONE_LOC = "Nichts" + .C_CONVERT_FOLDER_QUESTION_LOC = "Welche Umwandlung sollte sich auf die Dateien dieses Verzeichnis durchgeführt werden?" .C_CONVERTER_UNLOAD_LOC = "Konverter wird entladen" .C_CONVERTING_FILE_LOC = "Konvertiere Datei" .C_DATA_ERROR_CANT_PARSE_UNPAIRING_DOUBLE_QUOTES_LOC = "Datenfehler: Keine Analyse möglich da ungepaarte Anführungszeichen in Zeile <>" @@ -22009,6 +22174,7 @@ DEFINE CLASS CL_LANG AS Custom .C_FILE_NAME_IS_NOT_SUPPORTED_LOC = "Datei [<<.c_InputFile>>] wird nicht unterstützt" .C_FILE_NOT_FOUND_LOC = "Datei nicht gefunden" .C_FILENAME_LOC = "Datei" + .C_EXCLUDING_CLASS_LOC = "ohne Klasse" .C_EXTENSION_RECONFIGURATION_LOC = "Erweiterungsneukonfiguration:" .C_EXTERNAL_CLASS_COUNT_DOES_NOT_MATCH_FOUND_CLASSES_LOC = "Externe Klassenzahl (<< toModulo._ExternalClasses_Count >>) nicht gefunden Klassen entsprechen (<< toModulo._Clases_Count >>) für Datei [<< toFoxBin2Prg.c_InputFile >>]" .C_EXTERNAL_CLASS_NAME_DOES_NOT_FOUND_LOC = "Externe Klasse (<>) nicht in der Datei [<>] gefunden" @@ -22022,6 +22188,7 @@ DEFINE CLASS CL_LANG AS Custom .C_FOXBIN2PRG_JUST_VFP_9_LOC = "FOXBIN2PRG ist nur für Visual FoxPro 9.0!" .C_FOXBIN2PRG_WARN_CAPTION_LOC = "FOXBIN2PRG: WARNUNG!" .C_GENERATED_FILE_SIZE_LOC = "Generierte Dateigröße" + .C_INCLUDING_CLASS_LOC = "einschließlich Klasse" .C_LANGUAGE_LOC = "DE" .C_MENU_NOT_IN_VFP9_FORMAT_LOC = "Menu [<>] ist NICHT in VFP 9 Format! - Bitte zuerst nach VFP 9 konvertieren mit MODIFY MENU '<>'" .C_NAMES_CAPITALIZATION_PROGRAM_FOUND_LOC = "* Programm für Großschreibungssetzung [<>] gefunden" @@ -22042,7 +22209,8 @@ DEFINE CLASS CL_LANG AS Custom .C_STRUCTURE_NESTING_ERROR_ENDPROC_EXPECTED_LOC = "Fehler in Verschachtelungsstruktur. ENDPROC erwartet, aber es wurde ENDDEFINE in Klasse <> (<>), Zeile <> der Datei <> gefunden" .C_STRUCTURE_NESTING_ERROR_ENDPROC_EXPECTED_2_LOC = "Fehler in Verschachtelungsstruktur. ENDPROC wurde erwartet, aber es wurde ENDDEFINE in Klasse <> (<>.<>), Zeile <> der Datei <> gefunden" .C_UNKNOWN_CLASS_NAME_LOC = "Unbekannte Klasse [<>]" - .C_WARN_TABLE_ALIAS_ON_INDEX_EXPRESSION_LOC = "WARNUNG!!" + CR_LF+ "SICHERSTELLEN DAS KEIN TABELLENALIAS IN DEM INDEXAUSDRUCK BENUTZT WIRD!! (z.B.: index on <>.campo tag keyname)" + .C_WARNING_LOC = "WARNUNG!" + .C_WARN_TABLE_ALIAS_ON_INDEX_EXPRESSION_LOC = "WARNUNG!" + CR_LF+ "SICHERSTELLEN DAS KEIN TABELLENALIAS IN DEM INDEXAUSDRUCK BENUTZT WIRD!! (z.B.: index on <>.campo tag keyname)" .C_WITH_ERRORS_LOC = "mit Fehlern" OTHERWISE && Si no existe, se queda el por defecto From c5c1324a48d2f009a7d1961da8aa4186639f763a Mon Sep 17 00:00:00 2001 From: fdbozzo Date: Thu, 18 Dec 2014 19:28:09 +0100 Subject: [PATCH 02/23] Changeset: 569 fdbozzo - 18/12/2014 01:07:14: - Salida del form Interactive con tecla Esc --- foxbin2prg.prg | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/foxbin2prg.prg b/foxbin2prg.prg index d99f265..fb89d91 100644 --- a/foxbin2prg.prg +++ b/foxbin2prg.prg @@ -3256,6 +3256,7 @@ DEFINE CLASS frm_interactive AS form Left = 12, ; Top = 16, ; Width = 356, ; + KeyPreview = .T., ; Name = "lbl_Title" @@ -3298,7 +3299,18 @@ DEFINE CLASS frm_interactive AS form ENDPROC - PROCEDURE opg_conversiontype.InteractiveChange + PROCEDURE KeyPress + LPARAMETERS nKeyCode, nShiftAltCtrl + + IF nKeyCode = 27 THEN + THISFORM.opg_ConversionType.Value = 3 + THISFORM.Hide() + CLEAR EVENTS + ENDIF + ENDPROC + + + PROCEDURE opg_conversiontype.Click *-- Selección THISFORM.Hide() CLEAR EVENTS From 1184fb0018366e153602251ede7ff82c24e038e5 Mon Sep 17 00:00:00 2001 From: fdbozzo Date: Fri, 19 Dec 2014 23:34:01 +0100 Subject: [PATCH 03/23] =?UTF-8?q?Changeset:=20570=20fdbozzo=20-=2018/12/20?= =?UTF-8?q?14=2019:28:09:=20-=20Log=20de=20informaci=C3=B3n=20y=20errores?= =?UTF-8?q?=20mejorado=20-=20Bug=20fix=20multi-config:=20Arreglada=20la=20?= =?UTF-8?q?multiconfiguraci=C3=B3n,=20que=20no=20se=20estaba=20aplicando?= =?UTF-8?q?=20correctamente=20a=20todos=20los=20archivos=20del=20directori?= =?UTF-8?q?o=20-=20Nuevo=20di=C3=A1logo=20de=20selecci=C3=B3n=20del=20tipo?= =?UTF-8?q?=20de=20conversi=C3=B3n=20cuando=20se=20elige=20un=20directorio?= =?UTF-8?q?=20con=20la=20palabra=20clave=20INTERACTIVE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- foxbin2prg.prg | 266 ++++++++++++++++++++++++++++--------------------- 1 file changed, 154 insertions(+), 112 deletions(-) diff --git a/foxbin2prg.prg b/foxbin2prg.prg index fb89d91..9fea821 100644 --- a/foxbin2prg.prg +++ b/foxbin2prg.prg @@ -652,11 +652,6 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM ERASE (THIS.c_ErrorLogFile) ERASE (THIS.c_LogFile) - THIS.writeLog( REPLICATE( '*', 100 ) ) - THIS.writeLog( 'FoxBin2Prg INIT' ) - THIS.writeLog( REPLICATE( '*', 100 ) ) - THIS.ChangeLanguage() - lcSys16 = SYS(16) IF LEFT(lcSys16,10) == 'PROCEDURE ' lnPosProg = AT(" ", lcSys16, 2) + 1 @@ -667,14 +662,20 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM THIS.c_Foxbin2prg_FullPath = SUBSTR( lcSys16, lnPosProg ) THIS.c_Foxbin2prg_ConfigFile = FORCEEXT( THIS.c_Foxbin2prg_FullPath, 'CFG' ) THIS.c_CurDir = SYS(5) + CURDIR() - THIS.o_FSO = CREATEOBJECT("Scripting.FileSystemObject") - THIS.o_WSH = CREATEOBJECT("WScript.Shell") - THIS.o_Configuration = CREATEOBJECT("COLLECTION") lc_Foxbin2prg_EXE = FORCEEXT( THIS.c_Foxbin2prg_FullPath, 'EXE' ) THIS.c_FB2PRG_EXE_Version = 'v' + IIF( AGETFILEVERSION( laValues, lc_Foxbin2prg_EXE ) = 0, TRANSFORM(THIS.n_FB2PRG_Version), laValues(4) ) ADDPROPERTY(_SCREEN, 'c_FB2PRG_EXE_Version', THIS.c_FB2PRG_EXE_Version) ADDPROPERTY(_SCREEN, 'ExitCode', 0) - THIS.writeLog( THIS.c_Foxbin2prg_FullPath + ' (EXE Version: ' + THIS.c_FB2PRG_EXE_Version + ')' ) + + THIS.writeLog( REPLICATE( '*', 100 ) ) + THIS.writeLog( 'FoxBin2Prg ' + THIS.c_FB2PRG_EXE_Version + ' INIT' ) + THIS.writeLog( REPLICATE( '*', 100 ) ) + THIS.writeLog( 'Executing: ' + THIS.c_Foxbin2prg_FullPath + ' (EXE Version: ' + THIS.c_FB2PRG_EXE_Version + ')' ) + THIS.ChangeLanguage() + + THIS.o_FSO = CREATEOBJECT("Scripting.FileSystemObject") + THIS.o_WSH = CREATEOBJECT("WScript.Shell") + THIS.o_Configuration = CREATEOBJECT("COLLECTION") THIS.EvaluarConfiguracion() RELEASE lcSys16, lnPosProg, lc_Foxbin2prg_EXE, laValues RETURN @@ -1289,14 +1290,19 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM .n_CFG_Actual = 0 .l_CFG_CachedAccess = .F. lc_CFG_Path = UPPER( JUSTPATH( lcConfigFile ) ) + lo_CFG = THIS IF .l_Main_CFG_Loaded AND lo_Configuration.Count > 0 .n_CFG_Actual = lo_Configuration.GetKey( lc_CFG_Path ) && 0=No hay CFG cacheada, +1=Hay CFG cacheada - .l_CFG_CachedAccess = (.n_CFG_Actual > 0) + + IF .n_CFG_Actual > 0 THEN + lo_CFG = lo_Configuration.Item(.n_CFG_Actual) + .l_CFG_CachedAccess = .T. + ELSE + .l_CFG_CachedAccess = .F. + ENDIF ENDIF - lo_CFG = THIS - DO CASE CASE .n_CFG_Actual = 0 *-- Si no se encontró un CFG cacheado, se busca si existe un archivo CFG en disco @@ -1315,7 +1321,7 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM *-- NOTA: SOLO LOS QUE NO VENGAN DE PARÁMETROS EXTERNOS DEBEN ASIGNARSE A lo_CFG AQUÍ. IF llExiste_CFG_EnDisco .writeLog( ) - .writeLog( '> READING CFG VALUES FROM DISK' ) + .writeLog( '> ' + loLang.C_READING_CFG_VALUES_FROM_DISK_LOC + ':' ) .writeLog( C_TAB + loLang.C_CONFIGFILE_LOC + ' ' + lcConfigFile ) IF .l_AllowMultiConfig AND .l_ConfigEvaluated AND .l_Main_CFG_Loaded @@ -1529,6 +1535,7 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM * .n_CFG_Actual = lo_Configuration.Count &&lo_Configuration.GetKey( UPPER( JUSTPATH( lcConfigFile ) ) ) *ENDIF .writeLog( ) + ENDIF && llExiste_CFG_EnDisco *-- ESTOS SE EVALÚAN FUERA DEL IF PORQUE NO DEPENDEN DEL CFG @@ -1559,7 +1566,8 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM lo_CFG.l_OptimizeByFilestamp = NOT (TRANSFORM(tcOptimizeByFilestamp) == '0') ENDIF - .writeLog( '> USING THIS CONFIG:' ) + .writeLog( '> ' + UPPER(loLang.C_USING_THIS_SETTINGS_LOC) + ':' ) + .writeLog( C_TAB + 'n_CFG_Actual: ' + TRANSFORM(.n_CFG_Actual) + ICASE(.n_CFG_Actual=1, ' [MASTER]', ' [SECONDARY]') ) .writeLog( C_TAB + 'l_CFG_CachedAccess: ' + TRANSFORM(.l_CFG_CachedAccess) ; + ' ( InputFile=[' + EVL(tc_InputFile,'') + '], CFG=[' + EVL(lo_CFG.c_Foxbin2prg_ConfigFile, '(Internal defaults)') + '] )' ) .writeLog( C_TAB + 'l_ShowProgress: ' + TRANSFORM(.l_ShowProgress) ) @@ -1576,7 +1584,6 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM .writeLog( C_TAB + 'l_DropNullCharsFromCode: ' + TRANSFORM(.l_DropNullCharsFromCode) ) .writeLog( C_TAB + 'l_ClearDBFLastUpdate: ' + TRANSFORM(.l_ClearDBFLastUpdate) ) .writeLog( C_TAB + 'c_Language: ' + TRANSFORM(.c_Language) ) - .writeLog( C_TAB + 'n_CFG_Actual: ' + TRANSFORM(.n_CFG_Actual) ) *-- Si existe una configuración y es NULL, se usa la predeterminada *IF .n_CFG_Actual > 0 AND ISNULL( .o_Configuration( .n_CFG_Actual ) ) THEN @@ -1880,10 +1887,6 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM .writeLog( ) *-- ARCHIVO DE CONFIGURACIÓN PRINCIPAL - IF INLIST( LOWER(tc_InputFile), LOWER([C:\DESA\foxbin2prg\pruebas varias\v1.19.36\FB2P_Ideas__RyanHarris\New (Option On)\myClasslib.frmbase.vc2]) ) - *fdb* - SET STEP ON - ENDIF *IF NOT .l_ConfigEvaluated THEN .EvaluarConfiguracion( @tcDontShowProgress, @tcDontShowErrors, @tcNoTimestamps, @tcDebug, @tcRecompile, @tcBackupLevels ; @@ -1909,10 +1912,11 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM IF '-SHOWMSG' $ ('-' + tcType) AND NOT '-BIN2PRG' $ ('-' + tcType) AND NOT '-PRG2BIN' $ ('-' + tcType) AND DIRECTORY(tc_InputFile) *-- Se seleccionó un directorio y se puede elegir: Bin2Txt, Txt2Bin y Nada + .writeLog( loLang.C_INTERACTIVE_DIRECTORY_SELECTION_LOC ) loFrm_Interactive = CREATEOBJECT('frm_interactive') loFrm_Interactive.Show() READ EVENTS - lnConversionOption = loFrm_Interactive.opg_conversiontype.Value + lnConversionOption = loFrm_Interactive.n_ConversionType loFrm_Interactive.Release() loFrm_Interactive = NULL @@ -1924,6 +1928,7 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM tcType = tcType + '-PRG2BIN' OTHERWISE && None + ERROR 1799 && Conversion Cancelled EXIT ENDCASE ENDIF @@ -1976,9 +1981,13 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM CASE '-BIN2PRG' $ ('-' + tcType) + .writeLog( '> ' + loLang.C_OPTION_LOC + ': BIN2PRG' ) + DO CASE CASE DIRECTORY(tc_InputFile) *-- CONVERSION BIN2PRG DE UN DIRECTORIO Y SUBDIRECTORIOS + .writeLog( '> InputFile ' + loLang.C_IS_A_DIRECTORY_LOC ) + DO CASE CASE .l_Recompile AND LEN(tcRecompile) > 3 AND DIRECTORY(tcRecompile) CD (tcRecompile) @@ -2017,16 +2026,21 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM .AvanceDelProceso( loLang.C_END_OF_PROCESS_LOC, lnFileCount, lnFileCount, 0 ) EXIT - CASE NOT .TieneSoporte_Bin2Prg( JUSTEXT(lcFile) ) OR NOT FILE(lcFile) + CASE NOT .TieneSoporte_Bin2Prg( JUSTEXT(tc_InputFile) ) OR NOT FILE(tc_InputFile) + .writeLog( '> InputFile ' + loLang.C_IS_UNSUPPORTED_LOC ) EXIT ENDCASE CASE '-PRG2BIN' $ ('-' + tcType) + .writeLog( '> ' + loLang.C_OPTION_LOC + ': PRG2BIN' ) + DO CASE CASE DIRECTORY(tc_InputFile) *-- CONVERSION PRG2BIN DE UN DIRECTORIO Y SUBDIRECTORIOS + .writeLog( '> InputFile ' + loLang.C_IS_A_DIRECTORY_LOC ) + DO CASE CASE .l_Recompile AND LEN(tcRecompile) > 3 AND DIRECTORY(tcRecompile) CD (tcRecompile) @@ -2065,7 +2079,8 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM .AvanceDelProceso( loLang.C_END_OF_PROCESS_LOC, lnFileCount, lnFileCount, 0 ) EXIT - CASE NOT .TieneSoporte_Prg2Bin( JUSTEXT(lcFile) ) OR NOT FILE(lcFile) + CASE NOT .TieneSoporte_Prg2Bin( JUSTEXT(tc_InputFile) ) OR NOT FILE(tc_InputFile) + .writeLog( '> InputFile ' + loLang.C_IS_UNSUPPORTED_LOC ) EXIT ENDCASE @@ -2113,6 +2128,7 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM DO CASE CASE UPPER( JUSTEXT( EVL(tc_InputFile,'') ) ) == 'PJX' AND EVL(tcType,'0') == '*' *-- SE QUIEREN CONVERTIR A TEXTO TODOS LOS ARCHIVOS DE UN PROYECTO + .writeLog( '> ' + loLang.C_CONVERT_ALL_FILES_IN_A_PROJECT_LOC + ': ' + loLang.C_BINARY_TO_TEXT_LOC ) lcFileSpec = FULLPATH( tc_InputFile ) DO CASE @@ -2153,6 +2169,7 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM CASE UPPER( JUSTEXT( EVL(tc_InputFile,'') ) ) == 'PJ2' AND EVL(tcType,'0') == '*' *-- SE QUIEREN CONVERTIR A BINARIO TODOS LOS ARCHIVOS DE UN PROYECTO + .writeLog( '> ' + loLang.C_CONVERT_ALL_FILES_IN_A_PROJECT_LOC + ': ' + loLang.C_TEXT_TO_BINARY_LOC ) lcFileSpec = FULLPATH( tc_InputFile ) DO CASE @@ -2207,6 +2224,7 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM ENDCASE IF FILE(tc_InputFile) + .writeLog( '> InputFile ' + loLang.C_IS_A_FILE_LOC ) tc_InputFile = LOCFILE(tc_InputFile) ERASE ( tc_InputFile + '.ERR' ) @@ -2238,10 +2256,12 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM loLang = CREATEOBJECT("CL_LANG","EN") ENDIF - IF '-SHOWMSG' $ ('-' + tcType) THEN - toEx.UserValue = 'tc_InputDir = [' + TRANSFORM(tc_InputFile) + ']' + IF '-SHOWMSG' $ ('-' + tcType) OR '-INTERACTIVE' $ ('-' + tcType) THEN + toEx.UserValue = toEx.UserValue + 'tc_InputDir = [' + TRANSFORM(tc_InputFile) + ']' + CR_LF THIS.l_ShowErrors = .F. && La opción "SHOWMSG" muestra su propio mensaje ENDIF + + toEx.UserValue = toEx.UserValue + 'tc_InputFile = ' + TRANSFORM(tc_InputFile) + CR_LF THIS.ejecutar_WriteErrorLog( @toEx, @lcErrorInfo ) @@ -2270,7 +2290,7 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM CD (JUSTPATH(THIS.c_CurDir)) DO CASE - CASE '-SHOWMSG' $ ('-' + tcType) + CASE '-SHOWMSG' $ ('-' + tcType) OR '-INTERACTIVE' $ ('-' + tcType) DO CASE CASE lnCodError = 1799 && Conversion Cancelled @@ -2309,7 +2329,7 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM LOCAL loLang as CL_LANG OF 'FOXBIN2PRG.PRG' loLang = _SCREEN.o_FoxBin2Prg_Lang - tcErrorInfo = THIS.Exception2Str(toEx) + CR_LF + CR_LF + loLang.C_SOURCEFILE_LOC + THIS.c_InputFile + tcErrorInfo = THIS.Exception2Str(@toEx) + CR_LF + CR_LF + loLang.C_SOURCEFILE_LOC + TRANSFORM(THIS.c_InputFile) ADDPROPERTY(_SCREEN, 'ExitCode', toEx.ERRORNO) *-- Escribo la información de error en la variable log de errores @@ -2362,7 +2382,7 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM ENDIF .c_InputFile = loFSO.GetAbsolutePathName( FORCEPATH( laDirFile(1,1), JUSTPATH(.c_InputFile) ) ) - + *-- VERIFICO SI HAY ARCHIVO DE CONFIGURACIÓN SECUNDARIO .EvaluarConfiguracion() @@ -2378,7 +2398,8 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM IF .n_ProcessedFiles > 0 THEN *-- Buscar si fue procesado antes IF ASCAN( .a_ProcessedFiles, lc_BaseFile, 1, 0, 0, 1+2+4 ) > 0 THEN - .writeLog( 'OPTIMIZACIÓN: El archivo Base [' + lc_BaseFile + '] ya fue procesado, por lo que no se procesará [' + .c_InputFile + ']' ) + *.writeLog( 'OPTIMIZACIÓN: El archivo Base [' + JUSTFNAME(lc_BaseFile) + '] ya fue procesado, por lo que no se procesará [' + JUSTFNAME(.c_InputFile) + ']' ) + .writeLog( TEXTMERGE( loLang.C_CLASSPERFILE_OPTIMIZATION_BASE_ALREADY_PROCESSED_LOC ) ) EXIT ENDIF ENDIF @@ -2651,7 +2672,7 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM CATCH TO toEx lnCodError = toEx.ERRORNO - lcErrorInfo = THIS.Exception2Str(toEx) + CR_LF + CR_LF + loLang.C_SOURCEFILE_LOC + THIS.c_InputFile + *lcErrorInfo = THIS.Exception2Str(toEx) + CR_LF + CR_LF + loLang.C_SOURCEFILE_LOC + THIS.c_InputFile IF THIS.l_Debug IF _VFP.STARTMODE = 0 @@ -3022,7 +3043,7 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM LOCAL lcError lcError = 'Error ' + TRANSFORM(toEx.ERRORNO) + ', ' + toEx.MESSAGE + CR_LF ; + toEx.PROCEDURE + ', ' + TRANSFORM(toEx.LINENO) + CR_LF ; - + toEx.LINECONTENTS + CR_LF + CR_LF ; + + toEx.LINECONTENTS + CR_LF ; + EVL(toEx.USERVALUE,'') RETURN lcError ENDPROC @@ -3244,6 +3265,7 @@ DEFINE CLASS frm_interactive AS form ControlBox = .F. AlwaysOnTop = .T. BackColor = RGB(255,255,255) + n_ConversionType = 3 Name = "frm_interactive" @@ -3260,63 +3282,61 @@ DEFINE CLASS frm_interactive AS form Name = "lbl_Title" - ADD OBJECT opg_conversiontype AS optiongroup WITH ; - ButtonCount = 3, ; - BackStyle = 0, ; - BorderStyle = 0, ; - Value = 3, ; - Height = 28, ; - Left = 40, ; + ADD OBJECT cmd_Bin2Prg AS commandbutton WITH ; Top = 64, ; - Width = 300, ; - Name = "opg_ConversionType", ; - Option1.Caption = _SCREEN.o_FoxBin2Prg_Lang.C_CONVERT_FOLDER_BIN2PRG_LOC, ; - Option1.Value = 1, ; - Option1.Height = 27, ; - Option1.Left = 0, ; - Option1.Style = 1, ; - Option1.Top = 0, ; - Option1.Width = 92, ; - Option1.Name = "opt_Bin2Prg", ; - Option2.Caption = _SCREEN.o_FoxBin2Prg_Lang.C_CONVERT_FOLDER_PRG2BIN_LOC, ; - Option2.Height = 27, ; - Option2.Left = 104, ; - Option2.Style = 1, ; - Option2.Top = 0, ; - Option2.Width = 92, ; - Option2.Name = "opt_Prg2Bin", ; - Option3.Caption = _SCREEN.o_FoxBin2Prg_Lang.C_CONVERT_FOLDER_NONE_LOC, ; - Option3.Height = 27, ; - Option3.Left = 208, ; - Option3.Style = 1, ; - Option3.Top = 0, ; - Option3.Width = 92, ; - Option3.Name = "opt_None" - - PROCEDURE Init - *LOCAL loLang as CL_LANG OF 'FOXBIN2PRG.PRG' - *loLang = _SCREEN.o_FoxBin2Prg_Lang - ENDPROC + Left = 40, ; + Height = 27, ; + Width = 92, ; + Caption = _SCREEN.o_FoxBin2Prg_Lang.C_BINARY_TO_TEXT_LOC, ; + Name = "cmd_Bin2Prg" - PROCEDURE KeyPress - LPARAMETERS nKeyCode, nShiftAltCtrl - - IF nKeyCode = 27 THEN - THISFORM.opg_ConversionType.Value = 3 - THISFORM.Hide() - CLEAR EVENTS - ENDIF - ENDPROC + ADD OBJECT cmd_Prg2Bin AS commandbutton WITH ; + Top = 64, ; + Left = 144, ; + Height = 27, ; + Width = 92, ; + Caption = _SCREEN.o_FoxBin2Prg_Lang.C_TEXT_TO_BINARY_LOC, ; + Name = "cmd_Prg2Bin" - PROCEDURE opg_conversiontype.Click - *-- Selección + ADD OBJECT cmd_None AS commandbutton WITH ; + Top = 64, ; + Left = 248, ; + Height = 27, ; + Width = 92, ; + Caption = _SCREEN.o_FoxBin2Prg_Lang.C_CONVERT_FOLDER_NONE_LOC, ; + Cancel = .T., ; + Name = "cmd_None" + + + PROCEDURE do_selection THISFORM.Hide() CLEAR EVENTS ENDPROC + PROCEDURE cmd_Bin2Prg.Click + *-- Selección + THISFORM.n_ConversionType = 1 + THISFORM.do_selection() + ENDPROC + + + PROCEDURE cmd_Prg2Bin.Click + *-- Selección + THISFORM.n_ConversionType = 2 + THISFORM.do_selection() + ENDPROC + + + PROCEDURE cmd_None.Click + *-- Selección + THISFORM.n_ConversionType = 3 + THISFORM.do_selection() + ENDPROC + + ENDDEFINE @@ -7051,24 +7071,12 @@ DEFINE CLASS c_conversor_prg_a_bin AS c_conversor_base LOCAL toFoxBin2Prg AS c_foxbin2prg OF 'FOXBIN2PRG.PRG' #ENDIF - LOCAL lnItem, I, X + LOCAL lnItem, I, X, lcClaseExterna LOCAL loLang as CL_LANG OF 'FOXBIN2PRG.PRG' loLang = _SCREEN.o_FoxBin2Prg_Lang *-- Verificación de las Clases, si son Externas y se indicó chequearlas IF toFoxBin2Prg.l_UseClassPerFile AND toFoxBin2Prg.l_ClassPerFileCheck - DO CASE - CASE toModulo._ExternalClasses_Count = 0 AND toModulo._ExternalClasses_Count <> toModulo._Clases_Count - *ERROR 'El conteo de clases externas (' + TRANSFORM(toModulo._ExternalClasses_Count) + ') no coincide con la cantidad encontrada (' + TRANSFORM(toModulo._Clases_Count) + ') en el archivo [' + toFoxBin2Prg.c_InputFile + ']' - ERROR (TEXTMERGE(loLang.C_EXTERNAL_CLASS_COUNT_DOES_NOT_MATCH_FOUND_CLASSES_LOC)) - - CASE toModulo._Clases_Count =0 AND toModulo._ExternalClasses_Count <> toModulo._Clases_Count - *ERROR 'El conteo de clases externas (' + TRANSFORM(toModulo._ExternalClasses_Count) + ') no coincide con la cantidad encontrada (' + TRANSFORM(toModulo._Clases_Count) + ') en el archivo [' + toFoxBin2Prg.c_InputFile + ']' - ERROR (TEXTMERGE(loLang.C_EXTERNAL_CLASS_COUNT_DOES_NOT_MATCH_FOUND_CLASSES_LOC)) - - *CASE toModulo._ExternalClasses_Count <> toModulo._Clases_Count THEN - ENDCASE - FOR I = 1 TO toModulo._ExternalClasses_Count lnItem = 0 @@ -7080,8 +7088,9 @@ DEFINE CLASS c_conversor_prg_a_bin AS c_conversor_base ENDFOR IF lnItem = 0 THEN + lcClaseExterna = FORCEPATH( JUSTSTEM(toFoxBin2Prg.c_InputFile) + '.' + toModulo._ExternalClasses(I) + '.' + JUSTEXT(toFoxBin2Prg.c_InputFile), JUSTPATH(toFoxBin2Prg.c_InputFile) ) *ERROR 'No se ha encontrado la clase externa [' + toModulo._ExternalClasses(I) + '] en el archivo [' + toFoxBin2Prg.c_InputFile + ']' - ERROR (TEXTMERGE(loLang.C_EXTERNAL_CLASS_NAME_DOES_NOT_FOUND_LOC)) + ERROR ( loLang.C_EXTERNAL_CLASS_NAME_WAS_NOT_FOUND_LOC + ' [' + lcClaseExterna + ']' ) ENDIF toModulo._Clases(lnItem)._Checked = .T. @@ -7146,14 +7155,14 @@ DEFINE CLASS c_conversor_prg_a_vcx AS c_conversor_prg_a_bin lcInputFile = FORCEPATH( JUSTSTEM( JUSTSTEM(.c_InputFile) ), JUSTPATH(.c_InputFile) ) + '.*.' + JUSTEXT(.c_InputFile) lnFileCount = ADIR( laFiles, lcInputFile, "", 1 ) ASORT( laFiles, 1, 0, 0, 1) - + FOR I = 1 TO lnFileCount lcInputFile_Class = FORCEPATH( JUSTSTEM( laFiles(I,1) ), JUSTPATH( .c_InputFile ) ) + '.' + JUSTEXT( .c_InputFile ) *-- Verificación de las Clases, si son Externas y se indicó chequearlas IF toFoxBin2Prg.l_ClassPerFileCheck AND ASCAN( toModulo._ExternalClasses , JUSTEXT( JUSTSTEM( lcInputFile_Class ) ), 1, 0, 1, 1+2+4 ) = 0 - .writeLog( C_TAB + '- ' + loLang.C_EXCLUDING_CLASS_LOC + ' ' + JUSTFNAME( lcInputFile_Class ) ) - .writeErrorLog( C_TAB + '- ' + loLang.C_WARNING_LOC + ' ' + loLang.C_EXCLUDING_CLASS_LOC + ' ' + JUSTFNAME( lcInputFile_Class ) ) + .writeLog( C_TAB + '- ' + loLang.C_OUTER_CLASS_DOES_NOT_MATCH_INNER_CLASSES_LOC + ' [' + lcInputFile_Class + ']' ) + .writeErrorLog( C_TAB + '- ' + loLang.C_WARNING_LOC + ' ' + loLang.C_OUTER_CLASS_DOES_NOT_MATCH_INNER_CLASSES_LOC + ' [' + lcInputFile_Class + ']' ) LOOP && Salteo esta clase ENDIF @@ -7507,8 +7516,8 @@ DEFINE CLASS c_conversor_prg_a_scx AS c_conversor_prg_a_bin *-- Verificación de las Clases, si son Externas y se indicó chequearlas IF toFoxBin2Prg.l_ClassPerFileCheck AND ASCAN( toModulo._ExternalClasses , JUSTEXT( JUSTSTEM( lcInputFile_Class ) ), 1, 0, 1, 1+2+4 ) = 0 - .writeLog( C_TAB + '- ' + loLang.C_EXCLUDING_CLASS_LOC + ' ' + JUSTFNAME( lcInputFile_Class ) ) - .writeErrorLog( C_TAB + '- ' + loLang.C_WARNING_LOC + ' ' + loLang.C_EXCLUDING_CLASS_LOC + ' ' + JUSTFNAME( lcInputFile_Class ) ) + .writeLog( C_TAB + '- ' + loLang.C_OUTER_CLASS_DOES_NOT_MATCH_INNER_CLASSES_LOC + ' [' + lcInputFile_Class + ']' ) + .writeErrorLog( C_TAB + '- ' + loLang.C_WARNING_LOC + ' ' + loLang.C_OUTER_CLASS_DOES_NOT_MATCH_INNER_CLASSES_LOC + ' [' + lcInputFile_Class + ']' ) LOOP && Salteo esta clase ENDIF @@ -21902,11 +21911,13 @@ DEFINE CLASS CL_LANG AS Custom C_BACKLINK_OF_TABLE_LOC = "of table" C_BACKUP_OF_LOC = "Doing Backup of: " C_CANT_GENERATE_FILE_BECAUSE_IT_IS_READONLY_LOC = "Cannot generate file [<>] because it is ReadOnly" + C_CLASSPERFILE_OPTIMIZATION_BASE_ALREADY_PROCESSED_LOC = "OPTIMIZATION: Base File [<>] already processed, skipping processing of file [<>]" C_CONFIGFILE_LOC = "Using configuration file:" C_CONVERSION_CANCELLED_BY_USER_LOC = "Conversion Cancelled by the user" + C_CONVERT_ALL_FILES_IN_A_PROJECT_LOC = "Convert all files in a Project" C_CONVERT_FOLDER_LOC = "Convert Folder" - C_CONVERT_FOLDER_BIN2PRG_LOC = "Binary to Text" - C_CONVERT_FOLDER_PRG2BIN_LOC = "Text to Binary" + C_BINARY_TO_TEXT_LOC = "Binary to Text" + C_TEXT_TO_BINARY_LOC = "Text to Binary" C_CONVERT_FOLDER_NONE_LOC = "None" C_CONVERT_FOLDER_QUESTION_LOC = "What conversion should be performed on the files of this folder?" C_CONVERTER_UNLOAD_LOC = "Converter unload" @@ -21916,10 +21927,9 @@ DEFINE CLASS CL_LANG AS Custom C_ENDDEFINE_MARKER_NOT_FOUND_LOC = "Cannot find end marker [ENDDEFINE] of line <> for ID [<>]" C_END_MARKER_NOT_FOUND_LOC = "Cannot find end marker [<>] that closes start marker [<>] on line <>" C_END_OF_PROCESS_LOC = "End of Process" - C_EXCLUDING_CLASS_LOC = "Excluding class" C_EXTENSION_RECONFIGURATION_LOC = "Extension Reconfiguration:" C_EXTERNAL_CLASS_COUNT_DOES_NOT_MATCH_FOUND_CLASSES_LOC = "External class count (<>) does not match found classes (<>) for file [<>]" - C_EXTERNAL_CLASS_NAME_DOES_NOT_FOUND_LOC = "External class [<>] is not found in file [<>]" + C_EXTERNAL_CLASS_NAME_WAS_NOT_FOUND_LOC = "External class was not found" C_FIELD_NOT_FOUND_ON_FILE_STRUCTURE_LOC = "Field [<>] not found in structure of file <>" C_FILE_DOESNT_EXIST_LOC = "File does not exist:" C_FILE_NAME_IS_NOT_SUPPORTED_LOC = "File [<<.c_InputFile>>] is not supported" @@ -21936,12 +21946,18 @@ DEFINE CLASS CL_LANG AS Custom C_FOXBIN2PRG_WARN_CAPTION_LOC = "FOXBIN2PRG: WARNING!" C_GENERATED_FILE_SIZE_LOC = "Generated file size" C_INCLUDING_CLASS_LOC = "Including class" + C_INTERACTIVE_DIRECTORY_SELECTION_LOC = "Interactive Directory Selection" + C_IS_A_FILE_LOC = "is a FILE" + C_IS_A_DIRECTORY_LOC = "is a DIRECTORY" + C_IS_UNSUPPORTED_LOC = "is unsupported" C_LANGUAGE_LOC = "EN" C_MENU_NOT_IN_VFP9_FORMAT_LOC = "Menu [<>] is NOT in VFP 9 Format! - Please convert to VFP 9 with MODIFY MENU '<>'" C_NAMES_CAPITALIZATION_PROGRAM_FOUND_LOC = "* Names capitalization program [<>] found" C_NAMES_CAPITALIZATION_PROGRAM_NOT_FOUND_LOC = "* Names capitalization program [<>] not found" C_OBJECT_NAME_WITHOUT_OBJECT_OREG_LOC = "Object [<>] does not contain oReg object (level <>)" C_ONLY_SETNAME_AND_GETNAME_RECOGNIZED_LOC = "Operation not recognized. Only SETNAME and GETNAME allowed." + C_OPTION_LOC = "Option" + C_OUTER_CLASS_DOES_NOT_MATCH_INNER_CLASSES_LOC = "The outer class does not match the inner classes" C_OUTPUT_FILE_IS_NOT_OVERWRITEN_LOC = "Optimization: Output file [<>] was not overwritten because it is the same as was generated." C_OUTPUTFILE_NEWER_THAN_INPUTFILE_LOC = "Optimization: Output file [<>] was not regenerated because it is newer than the inputfile." C_PRESS_ESC_TO_CANCEL = "Press Esc to Cancel" @@ -21949,6 +21965,7 @@ DEFINE CLASS CL_LANG AS Custom C_PROCESSING_LOC = "Processing file" C_PROCESS_PROGRESS_LOC = "Process Progress:" C_PROPERTY_NAME_NOT_RECOGNIZED_LOC = "Property [<>] is not recognized." + C_READING_CFG_VALUES_FROM_DISK_LOC = "READING CFG VALUES FROM DISK" C_REPORT_NOT_IN_VFP9_FORMAT_LOC = "Report [<>] is NOT in VFP 9 Format! - Please convert to VFP 9 with MODIFY REPORT '<>'" C_REQUESTING_CAPITALIZATION_OF_FILE_LOC = "- Requesting capitalization of file [<>]" C_SCANNING_FILE_AND_DIR_INFO_LOC = "Scanning file and directory information for" @@ -21956,6 +21973,7 @@ DEFINE CLASS CL_LANG AS Custom C_STRUCTURE_NESTING_ERROR_ENDPROC_EXPECTED_LOC = "Nesting structure error. ENDPROC expected but found ENDDEFINE on class <> (<>), line <> of file <>" C_STRUCTURE_NESTING_ERROR_ENDPROC_EXPECTED_2_LOC = "Nesting structure error. ENDPROC expected but found ENDDEFINE on class <> (<>.<>), line <> of file <>" C_UNKNOWN_CLASS_NAME_LOC = "Unknown class [<>]" + C_USING_THIS_SETTINGS_LOC = "Using this settings" C_WARNING_LOC = "WARNING!" C_WARN_TABLE_ALIAS_ON_INDEX_EXPRESSION_LOC = "WARNING!" + CR_LF+ "MAKE SURE YOU ARE NOT USING A TABLE ALIAS ON INDEX KEY EXPRESSIONS!! (ex: index on <>.campo tag keyname)" C_WITH_ERRORS_LOC = "with errors" @@ -22033,11 +22051,13 @@ DEFINE CLASS CL_LANG AS Custom .C_BACKLINK_OF_TABLE_LOC = "de la table" .C_BACKUP_OF_LOC = "Faire de sauvegarde des: " .C_CANT_GENERATE_FILE_BECAUSE_IT_IS_READONLY_LOC = "Vous ne pouvez pas générer un fichier [<>] car il est en lecture seule" + .C_CLASSPERFILE_OPTIMIZATION_BASE_ALREADY_PROCESSED_LOC = "OPTIMISATION: Fichier de base [<>] Déjà traitée, en sautant traitement de fichier [<>]" .C_CONFIGFILE_LOC = "Utilisation du fichier de configuration:" .C_CONVERSION_CANCELLED_BY_USER_LOC = "Conversion Annulé par l'utilisateur" + .C_CONVERT_ALL_FILES_IN_A_PROJECT_LOC = "Convertir tous les fichiers dans un Projet" .C_CONVERT_FOLDER_LOC = "Convertir un Dossier" - .C_CONVERT_FOLDER_BIN2PRG_LOC = "Binaire en Texte" - .C_CONVERT_FOLDER_PRG2BIN_LOC = "Texte à Binaire" + .C_BINARY_TO_TEXT_LOC = "Binaire en Texte" + .C_TEXT_TO_BINARY_LOC = "Texte à Binaire" .C_CONVERT_FOLDER_NONE_LOC = "Aucun" .C_CONVERT_FOLDER_QUESTION_LOC = "Que la conversion doit être effectuée sur les fichiers de ce dossier?" .C_CONVERTER_UNLOAD_LOC = "Convertisseur déchargement" @@ -22047,10 +22067,9 @@ DEFINE CLASS CL_LANG AS Custom .C_ENDDEFINE_MARKER_NOT_FOUND_LOC = "Vous ne trouvez pas marqueur de fin [ENDDEFINE] de la ligne <> ID [<>]" .C_END_MARKER_NOT_FOUND_LOC = "Vous ne trouvez pas fin marqueur [<>] qui ferme marqueur de début [<>] en ligne <>" .C_END_OF_PROCESS_LOC = "Fin du processus" - .C_EXCLUDING_CLASS_LOC = "Exclusing class" .C_EXTENSION_RECONFIGURATION_LOC = "Extension Reconfiguration:" .C_EXTERNAL_CLASS_COUNT_DOES_NOT_MATCH_FOUND_CLASSES_LOC = "Nombre de classe externe (<>) ne correspond pas classes trouvées (<>) pour le fichier [<>]" - .C_EXTERNAL_CLASS_NAME_DOES_NOT_FOUND_LOC = "Classe externe [<>] est introuvable dans le fichier [<>]" + .C_EXTERNAL_CLASS_NAME_WAS_NOT_FOUND_LOC = "Aucune classe externe est trouvé" .C_FIELD_NOT_FOUND_ON_FILE_STRUCTURE_LOC = "Champ [<< laProps (I) >>] ne trouve pas dans la structure du fichier DBF <<('TABLABIN')>>" .C_FILE_DOESNT_EXIST_LOC = "Fichier ne existe pas:" .C_FILE_NAME_IS_NOT_SUPPORTED_LOC = "File [<<.c_InputFile>>] ne est pas supporté" @@ -22067,12 +22086,17 @@ DEFINE CLASS CL_LANG AS Custom .C_FOXBIN2PRG_WARN_CAPTION_LOC = "FOXBIN2PRG: AVERTISSEMENT!" .C_GENERATED_FILE_SIZE_LOC = "Taille du fichier généré" .C_INCLUDING_CLASS_LOC = "Including class" + .C_INTERACTIVE_DIRECTORY_SELECTION_LOC = "Sélection répertoire interactive" + .C_IS_A_FILE_LOC = "est un FICHIER" + .C_IS_A_DIRECTORY_LOC = "est un RÉPERTOIRE" + .C_IS_UNSUPPORTED_LOC = "ne est pas supporté" .C_LANGUAGE_LOC = "FR" .C_MENU_NOT_IN_VFP9_FORMAT_LOC = "Menu [<>] ne est pas dans VFP 9 Format! - Se il vous plaît se convertir à VFP 9 avec MODIFY MENU '<>'" .C_NAMES_CAPITALIZATION_PROGRAM_FOUND_LOC = "* Programme des noms de capitalisation [<>] trouvé" .C_NAMES_CAPITALIZATION_PROGRAM_NOT_FOUND_LOC = "* Programme des noms de capitalisation [<>] introuvables" .C_OBJECT_NAME_WITHOUT_OBJECT_OREG_LOC = "Object [<>] ne contient pas l'objet oReg (niveau <>)" .C_ONLY_SETNAME_AND_GETNAME_RECOGNIZED_LOC = "Opération non reconnu. Seulement SETNAME et GETNAME permis." + .C_OUTER_CLASS_DOES_NOT_MATCH_INNER_CLASSES_LOC = "La classe externe ne correspond pas à la classe interne" .C_OUTPUT_FILE_IS_NOT_OVERWRITEN_LOC = "Optimisation: fichier de sortie [<>] ne était pas écrasé parce que ce est la même que celle générée." .C_OUTPUTFILE_NEWER_THAN_INPUTFILE_LOC = "Optimisation: fichier de sortie [<>] n'a pas été régénéré car il est plus récent que le fichier d'entrée." .C_PRESS_ESC_TO_CANCEL = "Appuyez sur Esc pour Annuler" @@ -22080,6 +22104,7 @@ DEFINE CLASS CL_LANG AS Custom .C_PROCESSING_LOC = "Traitement du fichier" .C_PROCESS_PROGRESS_LOC = "Processus Progrès:" .C_PROPERTY_NAME_NOT_RECOGNIZED_LOC = "Propriété [<>] ne est pas reconnu." + .C_READING_CFG_VALUES_FROM_DISK_LOC = "VALEURS LECTURE CFG À PARTIR DU DISQUE" .C_REPORT_NOT_IN_VFP9_FORMAT_LOC = "Rapport [<>] ne est pas dans VFP 9 Format! - Se il vous plaît se convertir à VFP 9 avec MODIFY REPORT '<>'" .C_REQUESTING_CAPITALIZATION_OF_FILE_LOC = "- Demande de capitalisation de fichier [<>]" .C_SCANNING_FILE_AND_DIR_INFO_LOC = "Fichier de numérisation et de l'information de répertoire pour" @@ -22087,6 +22112,7 @@ DEFINE CLASS CL_LANG AS Custom .C_STRUCTURE_NESTING_ERROR_ENDPROC_EXPECTED_LOC = "Nesting erreur de structure. ENDPROC prévu, mais a trouvé ENDDEFINE sur la classe <> (<>), ligne <> du fichier <>" .C_STRUCTURE_NESTING_ERROR_ENDPROC_EXPECTED_2_LOC = "Nesting erreur de structure. ENDPROC attendue, mais ENDDEFINE sur la classe <> (<>.<>), ligne <> du fichier <>" .C_UNKNOWN_CLASS_NAME_LOC = "Classe inconnue[<>]" + .C_USING_THIS_SETTINGS_LOC = "Utilisation de ce paramètre" .C_WARNING_LOC = "AVERTISSEMENT!" .C_WARN_TABLE_ALIAS_ON_INDEX_EXPRESSION_LOC = "AVERTISSEMENT!" + CR_LF+ "ASSUREZ VOUS NE UTILISEZ PAS UN ALIAS DE TABLE SUR LES EXPRESSIONS INDEX CLÉS!! (exemple: index on <>.campo tag keyname)" .C_WITH_ERRORS_LOC = "avec des erreurs" @@ -22100,11 +22126,13 @@ DEFINE CLASS CL_LANG AS Custom .C_BACKLINK_OF_TABLE_LOC = "de la tabla" .C_BACKUP_OF_LOC = "Haciendo Backup de: " .C_CANT_GENERATE_FILE_BECAUSE_IT_IS_READONLY_LOC = "No se puede generar el archivo [<>] porque es ReadOnly" + .C_CLASSPERFILE_OPTIMIZATION_BASE_ALREADY_PROCESSED_LOC = "OPTIMIZACIÓN: El archivo Base [<>] ya fue procesado, ignorando el procesamiento del archivo [<>]" .C_CONFIGFILE_LOC = "Usando archivo de configuración:" .C_CONVERSION_CANCELLED_BY_USER_LOC = "Conversión Cancelada por el usuario" + .C_CONVERT_ALL_FILES_IN_A_PROJECT_LOC = "Convertir todos los archivos de un Proyecto" .C_CONVERT_FOLDER_LOC = "Convertir Carpeta" - .C_CONVERT_FOLDER_BIN2PRG_LOC = "Binario a Texto" - .C_CONVERT_FOLDER_PRG2BIN_LOC = "Texto a Binario" + .C_BINARY_TO_TEXT_LOC = "Binario a Texto" + .C_TEXT_TO_BINARY_LOC = "Texto a Binario" .C_CONVERT_FOLDER_NONE_LOC = "Ninguna" .C_CONVERT_FOLDER_QUESTION_LOC = "¿Qué tipo de conversión se debe hacer en esta carpeta?" .C_CONVERTER_UNLOAD_LOC = "Descarga del conversor" @@ -22114,10 +22142,9 @@ DEFINE CLASS CL_LANG AS Custom .C_ENDDEFINE_MARKER_NOT_FOUND_LOC = "No se ha encontrado el marcador de fin [ENDDEFINE] de la línea <> para el identificador [<>]" .C_END_MARKER_NOT_FOUND_LOC = "No se ha encontrado el marcador de fin [<>] que cierra al marcador de inicio [<>] de la línea <>" .C_END_OF_PROCESS_LOC = "Fin del Proceso" - .C_EXCLUDING_CLASS_LOC = "Excluyendo clase" .C_EXTENSION_RECONFIGURATION_LOC = "Reconfiguración de extensión:" .C_EXTERNAL_CLASS_COUNT_DOES_NOT_MATCH_FOUND_CLASSES_LOC = "El conteo de clases externas (<>) no coincide con la cantidad encontrada (<>) para el archivo [<>]" - .C_EXTERNAL_CLASS_NAME_DOES_NOT_FOUND_LOC = "No se ha encontrado la clase externa [<>] del archivo [<>]" + .C_EXTERNAL_CLASS_NAME_WAS_NOT_FOUND_LOC = "No se encontró la clase externa" .C_FIELD_NOT_FOUND_ON_FILE_STRUCTURE_LOC = "No se encontró el campo [<>] en la estructura del archivo <>" .C_FILE_DOESNT_EXIST_LOC = "El archivo no existe:" .C_FILE_NAME_IS_NOT_SUPPORTED_LOC = "El archivo [<<.c_InputFile>>] no está soportado" @@ -22135,11 +22162,16 @@ DEFINE CLASS CL_LANG AS Custom .C_GENERATED_FILE_SIZE_LOC = "Tamaño del archivo generado" .C_MENU_NOT_IN_VFP9_FORMAT_LOC = "El Menú [<>] NO está en formato VFP 9! - Por favor convertirlo a VFP 9 con MODIFY MENU '<>'" .C_INCLUDING_CLASS_LOC = "Incluyendo clase" + .C_INTERACTIVE_DIRECTORY_SELECTION_LOC = "Selección Interactiva de Directorio" + .C_IS_A_FILE_LOC = "es un ARCHIVO" + .C_IS_A_DIRECTORY_LOC = "es un DIRECTORIO" + .C_IS_UNSUPPORTED_LOC = "no está soportado" .C_LANGUAGE_LOC = "ES" .C_NAMES_CAPITALIZATION_PROGRAM_FOUND_LOC = "* Se ha encontrado el programa de capitalización de nombres [<>]" .C_NAMES_CAPITALIZATION_PROGRAM_NOT_FOUND_LOC = "* No se ha encontrado el programa de capitalización de nombres [<>]" .C_OBJECT_NAME_WITHOUT_OBJECT_OREG_LOC = "Objeto [<>] no contiene el objeto oReg (nivel <>)" .C_ONLY_SETNAME_AND_GETNAME_RECOGNIZED_LOC = "Operación no reconocida. Solo re reconoce SETNAME y GETNAME." + .C_OUTER_CLASS_DOES_NOT_MATCH_INNER_CLASSES_LOC = "La clase externa no coincide con la clase interna" .C_OUTPUT_FILE_IS_NOT_OVERWRITEN_LOC = "Optimización: El archivo de salida [<>] no se sobreescribe por ser igual al generado." .C_OUTPUTFILE_NEWER_THAN_INPUTFILE_LOC = "Optimización: El archivo de salida [<>] no se regenera por ser más nuevo que el de entrada." .C_PRESS_ESC_TO_CANCEL = "Pulse Esc para Cancelar" @@ -22147,6 +22179,7 @@ DEFINE CLASS CL_LANG AS Custom .C_PROCESSING_LOC = "Procesando archivo" .C_PROCESS_PROGRESS_LOC = "Avance del proceso:" .C_PROPERTY_NAME_NOT_RECOGNIZED_LOC = "Propiedad [<>] no reconocida." + .C_READING_CFG_VALUES_FROM_DISK_LOC = "LEYENDO VALORES DEL ARCHIVO CFG DEL DISCO" .C_REPORT_NOT_IN_VFP9_FORMAT_LOC = "El Reporte [<>] NO está en formato VFP 9! - Por favor convertirlo a VFP 9 con MODIFY REPORT '<>'" .C_REQUESTING_CAPITALIZATION_OF_FILE_LOC = "- Solicitado capitalizar el archivo [<>]" .C_SCANNING_FILE_AND_DIR_INFO_LOC = "Escaneando archivos e información de directorio para" @@ -22154,6 +22187,7 @@ DEFINE CLASS CL_LANG AS Custom .C_STRUCTURE_NESTING_ERROR_ENDPROC_EXPECTED_LOC = "Error de anidamiento de estructuras. Se esperaba ENDPROC pero se encontró ENDDEFINE en la clase <> (<>), línea <> del archivo <>" .C_STRUCTURE_NESTING_ERROR_ENDPROC_EXPECTED_2_LOC = "Error de anidamiento de estructuras. Se esperaba ENDPROC pero se encontró ENDDEFINE en la clase <> (<>.<>), línea <> del archivo <>" .C_UNKNOWN_CLASS_NAME_LOC = "Clase [<>] desconocida" + .C_USING_THIS_SETTINGS_LOC = "Usando esta configuración" .C_WARNING_LOC = "¡ATENCIÓN!" .C_WARN_TABLE_ALIAS_ON_INDEX_EXPRESSION_LOC = "¡ATENCIÓN!" + CR_LF+ "ASEGÚRESE DE QUE NO ESTÁ USANDO UN ALIAS DE TABLA EN LAS EXPRESIONES DE LOS ÍNDICES!! (ej: index on <>.campo tag nombreclave)" .C_WITH_ERRORS_LOC = "con errores" @@ -22167,11 +22201,13 @@ DEFINE CLASS CL_LANG AS Custom .C_BACKLINK_OF_TABLE_LOC = "von Tabelle" .C_BACKUP_OF_LOC = "Mache Backup von: " .C_CANT_GENERATE_FILE_BECAUSE_IT_IS_READONLY_LOC = "Kann Datei [<>] nicht generieren da sie Schreibgeschützt ist" + .C_CLASSPERFILE_OPTIMIZATION_BASE_ALREADY_PROCESSED_LOC = "Optimierung: Grund Datei [<>] Schon verarbeitet, das Überspringen Verarbeitung der Datei [<>]" .C_CONFIGFILE_LOC = "Benutze Konfigurationsdatei:" .C_CONVERSION_CANCELLED_BY_USER_LOC = "Konvertierung durch den Benutzer abgebrochen" + .C_CONVERT_ALL_FILES_IN_A_PROJECT_LOC = "alle Dateien in einem Projekt zu konvertieren" .C_CONVERT_FOLDER_LOC = "Konvertieren Verzeichnis" - .C_CONVERT_FOLDER_BIN2PRG_LOC = "Binär zu Text" - .C_CONVERT_FOLDER_PRG2BIN_LOC = "Text zu Binär" + .C_BINARY_TO_TEXT_LOC = "Binär zu Text" + .C_TEXT_TO_BINARY_LOC = "Text zu Binär" .C_CONVERT_FOLDER_NONE_LOC = "Nichts" .C_CONVERT_FOLDER_QUESTION_LOC = "Welche Umwandlung sollte sich auf die Dateien dieses Verzeichnis durchgeführt werden?" .C_CONVERTER_UNLOAD_LOC = "Konverter wird entladen" @@ -22186,10 +22222,9 @@ DEFINE CLASS CL_LANG AS Custom .C_FILE_NAME_IS_NOT_SUPPORTED_LOC = "Datei [<<.c_InputFile>>] wird nicht unterstützt" .C_FILE_NOT_FOUND_LOC = "Datei nicht gefunden" .C_FILENAME_LOC = "Datei" - .C_EXCLUDING_CLASS_LOC = "ohne Klasse" .C_EXTENSION_RECONFIGURATION_LOC = "Erweiterungsneukonfiguration:" .C_EXTERNAL_CLASS_COUNT_DOES_NOT_MATCH_FOUND_CLASSES_LOC = "Externe Klassenzahl (<< toModulo._ExternalClasses_Count >>) nicht gefunden Klassen entsprechen (<< toModulo._Clases_Count >>) für Datei [<< toFoxBin2Prg.c_InputFile >>]" - .C_EXTERNAL_CLASS_NAME_DOES_NOT_FOUND_LOC = "Externe Klasse (<>) nicht in der Datei [<>] gefunden" + .C_EXTERNAL_CLASS_NAME_WAS_NOT_FOUND_LOC = "Keine externe Klasse gefunden" .C_FOXBIN2PRG_ERROR_CAPTION_LOC = "FOXBIN2PRG: FEHLER!!" .C_FOXBIN2PRG_INFO_SINTAX_LOC = "FOXBIN2PRG: SYNTAX INFO" .C_FOXBIN2PRG_INFO_SINTAX_EXAMPLE_LOC = "FOXBIN2PRG [,cType ,cTextName ,cGenText ,cDontShowErrors ,cDebug, cDontShowProgress, cOriginalFileName, cRecompile, cNoTimestamps]" + CR_LF + CR_LF ; @@ -22201,12 +22236,17 @@ DEFINE CLASS CL_LANG AS Custom .C_FOXBIN2PRG_WARN_CAPTION_LOC = "FOXBIN2PRG: WARNUNG!" .C_GENERATED_FILE_SIZE_LOC = "Generierte Dateigröße" .C_INCLUDING_CLASS_LOC = "einschließlich Klasse" + .C_INTERACTIVE_DIRECTORY_SELECTION_LOC = "Auswählen interaktive Verzeichnis" + .C_IS_A_FILE_LOC = "ist eine DATEI" + .C_IS_A_DIRECTORY_LOC = "ist ein VERZEICHNIS" + .C_IS_UNSUPPORTED_LOC = "wird nicht unterstützt" .C_LANGUAGE_LOC = "DE" .C_MENU_NOT_IN_VFP9_FORMAT_LOC = "Menu [<>] ist NICHT in VFP 9 Format! - Bitte zuerst nach VFP 9 konvertieren mit MODIFY MENU '<>'" .C_NAMES_CAPITALIZATION_PROGRAM_FOUND_LOC = "* Programm für Großschreibungssetzung [<>] gefunden" .C_NAMES_CAPITALIZATION_PROGRAM_NOT_FOUND_LOC = "* Programm für Großschreibungssetzung [<>] nicht gefunden" .C_OBJECT_NAME_WITHOUT_OBJECT_OREG_LOC = "Objekt [<>] enthält nicht oReg Objekt (level <>)" .C_ONLY_SETNAME_AND_GETNAME_RECOGNIZED_LOC = "Befehl nicht erkannt. Nur SETNAME und GETNAME erlaubt." + .C_OUTER_CLASS_DOES_NOT_MATCH_INNER_CLASSES_LOC = "Die äußere Klasse nicht die innere Klassifizierung anzeigen lassen" .C_OUTPUT_FILE_IS_NOT_OVERWRITEN_LOC = "Optimierung: Ausgabedatei [<>] wurde nicht überschrieben da sie dieselbe ist wie die neu generierte." .C_OUTPUTFILE_NEWER_THAN_INPUTFILE_LOC = "Optimierung: Ausgabedatei [<>] wurde nicht erneuert da sie neuer ist als die Ursprungsdatei." .C_PRESS_ESC_TO_CANCEL = "Drücken Sie Esc für Abbrechen" @@ -22214,6 +22254,7 @@ DEFINE CLASS CL_LANG AS Custom .C_PROCESSING_LOC = "Bearbeite Datei" .C_PROCESS_PROGRESS_LOC = "Bearbeitungsfortschritt:" .C_PROPERTY_NAME_NOT_RECOGNIZED_LOC = "Eigenschaft [<>] nicht erkannt." + .C_READING_CFG_VALUES_FROM_DISK_LOC = "LESEWERTE CFG-DATEI AUF DER FESTPLATTE" .C_REPORT_NOT_IN_VFP9_FORMAT_LOC = "Report [<>] ist NICHT in VFP 9 Format! - Bitte zuerst nach VFP 9 konvertieren mit MODIFY REPORT '<>'" .C_REQUESTING_CAPITALIZATION_OF_FILE_LOC = "- Forder Großschreibung für Datei [<>] an" .C_SCANNING_FILE_AND_DIR_INFO_LOC = "Scannen Datei- und Verzeichnisinformationen für" @@ -22221,6 +22262,7 @@ DEFINE CLASS CL_LANG AS Custom .C_STRUCTURE_NESTING_ERROR_ENDPROC_EXPECTED_LOC = "Fehler in Verschachtelungsstruktur. ENDPROC erwartet, aber es wurde ENDDEFINE in Klasse <> (<>), Zeile <> der Datei <> gefunden" .C_STRUCTURE_NESTING_ERROR_ENDPROC_EXPECTED_2_LOC = "Fehler in Verschachtelungsstruktur. ENDPROC wurde erwartet, aber es wurde ENDDEFINE in Klasse <> (<>.<>), Zeile <> der Datei <> gefunden" .C_UNKNOWN_CLASS_NAME_LOC = "Unbekannte Klasse [<>]" + .C_USING_THIS_SETTINGS_LOC = "Mit dieser einstellung" .C_WARNING_LOC = "WARNUNG!" .C_WARN_TABLE_ALIAS_ON_INDEX_EXPRESSION_LOC = "WARNUNG!" + CR_LF+ "SICHERSTELLEN DAS KEIN TABELLENALIAS IN DEM INDEXAUSDRUCK BENUTZT WIRD!! (z.B.: index on <>.campo tag keyname)" .C_WITH_ERRORS_LOC = "mit Fehlern" From 1536a4dbe0342423c25a6bdd5253101ec5272e31 Mon Sep 17 00:00:00 2001 From: fdbozzo Date: Fri, 19 Dec 2014 23:56:24 +0100 Subject: [PATCH 04/23] Changeset: 571 fdbozzo - 19/12/2014 23:34:01: - Mejoras multiidioma --- foxbin2prg.prg | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/foxbin2prg.prg b/foxbin2prg.prg index 9fea821..02f0f3d 100644 --- a/foxbin2prg.prg +++ b/foxbin2prg.prg @@ -1867,9 +1867,9 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM tcType = UPPER( EVL(tcType,'') ) .writeLog( REPLICATE( '*', 100 ) ) - .writeLog( 'MAIN EXECUTION' ) + .writeLog( loLang.C_MAIN_EXECUTION_LOC ) .writeLog( REPLICATE( '*', 100 ) ) - .writeLog( '> EXTERNAL PARAMETERS' ) + .writeLog( '> ' + loLang.C_EXTERNAL_PARAMETERS_LOC + ':' ) .writeLog( C_TAB + 'tc_InputFile: ' + TRANSFORM( EVL(tc_InputFile, '(empty) -> Will use Default' ) ) ) .writeLog( C_TAB + 'tcType: ' + TRANSFORM( EVL(tcType, '(empty) -> Will use Default' ) ) ) .writeLog( C_TAB + 'tcTextName: ' + TRANSFORM( EVL(tcTextName, '(empty) -> Will use Default' ) ) ) @@ -21930,6 +21930,7 @@ DEFINE CLASS CL_LANG AS Custom C_EXTENSION_RECONFIGURATION_LOC = "Extension Reconfiguration:" C_EXTERNAL_CLASS_COUNT_DOES_NOT_MATCH_FOUND_CLASSES_LOC = "External class count (<>) does not match found classes (<>) for file [<>]" C_EXTERNAL_CLASS_NAME_WAS_NOT_FOUND_LOC = "External class was not found" + C_EXTERNAL_PARAMETERS_LOC = "EXTERNAL PARAMETERS" C_FIELD_NOT_FOUND_ON_FILE_STRUCTURE_LOC = "Field [<>] not found in structure of file <>" C_FILE_DOESNT_EXIST_LOC = "File does not exist:" C_FILE_NAME_IS_NOT_SUPPORTED_LOC = "File [<<.c_InputFile>>] is not supported" @@ -21951,6 +21952,7 @@ DEFINE CLASS CL_LANG AS Custom C_IS_A_DIRECTORY_LOC = "is a DIRECTORY" C_IS_UNSUPPORTED_LOC = "is unsupported" C_LANGUAGE_LOC = "EN" + C_MAIN_EXECUTION_LOC = "MAIN EXECUTION" C_MENU_NOT_IN_VFP9_FORMAT_LOC = "Menu [<>] is NOT in VFP 9 Format! - Please convert to VFP 9 with MODIFY MENU '<>'" C_NAMES_CAPITALIZATION_PROGRAM_FOUND_LOC = "* Names capitalization program [<>] found" C_NAMES_CAPITALIZATION_PROGRAM_NOT_FOUND_LOC = "* Names capitalization program [<>] not found" @@ -22070,6 +22072,7 @@ DEFINE CLASS CL_LANG AS Custom .C_EXTENSION_RECONFIGURATION_LOC = "Extension Reconfiguration:" .C_EXTERNAL_CLASS_COUNT_DOES_NOT_MATCH_FOUND_CLASSES_LOC = "Nombre de classe externe (<>) ne correspond pas classes trouvées (<>) pour le fichier [<>]" .C_EXTERNAL_CLASS_NAME_WAS_NOT_FOUND_LOC = "Aucune classe externe est trouvé" + .C_EXTERNAL_PARAMETERS_LOC = "PARAMÈTRES EXTERNES" .C_FIELD_NOT_FOUND_ON_FILE_STRUCTURE_LOC = "Champ [<< laProps (I) >>] ne trouve pas dans la structure du fichier DBF <<('TABLABIN')>>" .C_FILE_DOESNT_EXIST_LOC = "Fichier ne existe pas:" .C_FILE_NAME_IS_NOT_SUPPORTED_LOC = "File [<<.c_InputFile>>] ne est pas supporté" @@ -22091,6 +22094,7 @@ DEFINE CLASS CL_LANG AS Custom .C_IS_A_DIRECTORY_LOC = "est un RÉPERTOIRE" .C_IS_UNSUPPORTED_LOC = "ne est pas supporté" .C_LANGUAGE_LOC = "FR" + .C_MAIN_EXECUTION_LOC = "EXÉCUTION PRINCIPALE" .C_MENU_NOT_IN_VFP9_FORMAT_LOC = "Menu [<>] ne est pas dans VFP 9 Format! - Se il vous plaît se convertir à VFP 9 avec MODIFY MENU '<>'" .C_NAMES_CAPITALIZATION_PROGRAM_FOUND_LOC = "* Programme des noms de capitalisation [<>] trouvé" .C_NAMES_CAPITALIZATION_PROGRAM_NOT_FOUND_LOC = "* Programme des noms de capitalisation [<>] introuvables" @@ -22145,6 +22149,7 @@ DEFINE CLASS CL_LANG AS Custom .C_EXTENSION_RECONFIGURATION_LOC = "Reconfiguración de extensión:" .C_EXTERNAL_CLASS_COUNT_DOES_NOT_MATCH_FOUND_CLASSES_LOC = "El conteo de clases externas (<>) no coincide con la cantidad encontrada (<>) para el archivo [<>]" .C_EXTERNAL_CLASS_NAME_WAS_NOT_FOUND_LOC = "No se encontró la clase externa" + .C_EXTERNAL_PARAMETERS_LOC = "PARÁMETROS EXTERNOS" .C_FIELD_NOT_FOUND_ON_FILE_STRUCTURE_LOC = "No se encontró el campo [<>] en la estructura del archivo <>" .C_FILE_DOESNT_EXIST_LOC = "El archivo no existe:" .C_FILE_NAME_IS_NOT_SUPPORTED_LOC = "El archivo [<<.c_InputFile>>] no está soportado" @@ -22167,6 +22172,7 @@ DEFINE CLASS CL_LANG AS Custom .C_IS_A_DIRECTORY_LOC = "es un DIRECTORIO" .C_IS_UNSUPPORTED_LOC = "no está soportado" .C_LANGUAGE_LOC = "ES" + .C_MAIN_EXECUTION_LOC = "EJECUCIÓN PRINCIPAL" .C_NAMES_CAPITALIZATION_PROGRAM_FOUND_LOC = "* Se ha encontrado el programa de capitalización de nombres [<>]" .C_NAMES_CAPITALIZATION_PROGRAM_NOT_FOUND_LOC = "* No se ha encontrado el programa de capitalización de nombres [<>]" .C_OBJECT_NAME_WITHOUT_OBJECT_OREG_LOC = "Objeto [<>] no contiene el objeto oReg (nivel <>)" @@ -22225,6 +22231,7 @@ DEFINE CLASS CL_LANG AS Custom .C_EXTENSION_RECONFIGURATION_LOC = "Erweiterungsneukonfiguration:" .C_EXTERNAL_CLASS_COUNT_DOES_NOT_MATCH_FOUND_CLASSES_LOC = "Externe Klassenzahl (<< toModulo._ExternalClasses_Count >>) nicht gefunden Klassen entsprechen (<< toModulo._Clases_Count >>) für Datei [<< toFoxBin2Prg.c_InputFile >>]" .C_EXTERNAL_CLASS_NAME_WAS_NOT_FOUND_LOC = "Keine externe Klasse gefunden" + .C_EXTERNAL_PARAMETERS_LOC = "EXTERNE PARAMETER" .C_FOXBIN2PRG_ERROR_CAPTION_LOC = "FOXBIN2PRG: FEHLER!!" .C_FOXBIN2PRG_INFO_SINTAX_LOC = "FOXBIN2PRG: SYNTAX INFO" .C_FOXBIN2PRG_INFO_SINTAX_EXAMPLE_LOC = "FOXBIN2PRG [,cType ,cTextName ,cGenText ,cDontShowErrors ,cDebug, cDontShowProgress, cOriginalFileName, cRecompile, cNoTimestamps]" + CR_LF + CR_LF ; @@ -22241,6 +22248,7 @@ DEFINE CLASS CL_LANG AS Custom .C_IS_A_DIRECTORY_LOC = "ist ein VERZEICHNIS" .C_IS_UNSUPPORTED_LOC = "wird nicht unterstützt" .C_LANGUAGE_LOC = "DE" + .C_MAIN_EXECUTION_LOC = "HAUPTAUSFÜHRUNGS" .C_MENU_NOT_IN_VFP9_FORMAT_LOC = "Menu [<>] ist NICHT in VFP 9 Format! - Bitte zuerst nach VFP 9 konvertieren mit MODIFY MENU '<>'" .C_NAMES_CAPITALIZATION_PROGRAM_FOUND_LOC = "* Programm für Großschreibungssetzung [<>] gefunden" .C_NAMES_CAPITALIZATION_PROGRAM_NOT_FOUND_LOC = "* Programm für Großschreibungssetzung [<>] nicht gefunden" From 1572ef6a57b705e687837d8d81fe3eb611531ffb Mon Sep 17 00:00:00 2001 From: fdbozzo Date: Sat, 20 Dec 2014 13:44:27 +0100 Subject: [PATCH 05/23] =?UTF-8?q?Changeset:=20572=20fdbozzo=20-=2019/12/20?= =?UTF-8?q?14=2023:56:24:=20-=20Arreglo=20de=20la=20multiconfiguraci=C3=B3?= =?UTF-8?q?n:=20No=20se=20estaba=20detectando=20el=20caso=20de=20que=20inp?= =?UTF-8?q?utFile=20sea=20un=20directorio,=20y=20se=20usaba=20un=20CFG=20i?= =?UTF-8?q?ncorrecto?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- foxbin2prg.prg | 125 +++++++++++++++++++++++++++++++++++-------------- 1 file changed, 90 insertions(+), 35 deletions(-) diff --git a/foxbin2prg.prg b/foxbin2prg.prg index 02f0f3d..f1085bb 100644 --- a/foxbin2prg.prg +++ b/foxbin2prg.prg @@ -389,6 +389,10 @@ LPARAMETERS tc_InputFile, tcType, tcTextName, tlGenText, tcDontShowErrors, tcDeb #DEFINE SERVERINSTANCE_SINGLEUSE 1 && Single use server #DEFINE SERVERINSTANCE_NOTCREATABLE 2 && Instances creatable only inside Visual FoxPro #DEFINE SERVERINSTANCE_MULTIUSE 3 && Multi-use server + +*-- FileTypes for ADIR() +#DEFINE C_FILETYPE_DIRECTORY "D" +#DEFINE C_FILETYPE_FILE "F" *-- Fin / End LOCAL loCnv AS c_foxbin2prg OF 'FOXBIN2PRG.PRG' @@ -1261,10 +1265,27 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM PROCEDURE EvaluarConfiguracion + *-------------------------------------------------------------------------------------------------------------- + * PARÁMETROS: (v=Pasar por valor | @=Pasar por referencia) (!=Obligatorio | ?=Opcional) (IN/OUT) + * tcDontShowProgress (v? IN ) '1' para inhabilitar la barra de progreso + * tcDontShowErrors (v? IN ) '1' para no mostrar mensajes de error (MESSAGEBOX) + * tcNoTimestamps (v? IN ) Indica si se debe anular el timestamp ('1') o no ('0' ó vacío) + * tcDebug (v? IN ) '1' para habilitar modo debug (SOLO DESARROLLO) + * tcRecompile (v? IN ) Indica recompilar ('1') el binario una vez regenerado. [Cambio de funcionamiento por defecto] + * Este cambio es para ganar tiempo, velocidad y seguridad. Además la recompilación que hace FoxBin2Prg + * se hace desde el directorio del archivo, con lo que las referencias relativas pueden + * generar errores de compilación, típicamente los #include. + * NOTA: Si en vez de '1' se indica un Path (p.ej, el del proyecto, se usará como base para recompilar + * tcExtraBackupLevels (v? IN ) Indica la cantidad de niveles de backup a realizar (por defecto '1') + * tcClearUniqueID (v? IN ) Indica si se debe limpiar el UniqueID ('1') o no ('0' ó vacío) + * tcOptimizeByFilestamp (v? IN ) Indica si se debe optimizar por filestamp ('1') o no ('0' ó vacío) + * tc_InputFile (v! IN ) Nombre completo (fullpath) del archivo a convertir o nombre del directorio a procesar + * tc_InputFile_Type (@? IN ) Tipo de archivo de entrada: (D)irectory o (F)ile + *-------------------------------------------------------------------------------------------------------------- LPARAMETERS tcDontShowProgress, tcDontShowErrors, tcNoTimestamps, tcDebug, tcRecompile, tcExtraBackupLevels ; - , tcClearUniqueID, tcOptimizeByFilestamp, tc_InputFile + , tcClearUniqueID, tcOptimizeByFilestamp, tc_InputFile, tcInputFile_Type - LOCAL lcConfigFile, llExiste_CFG_EnDisco, laConfig(1), I, lcConfData, lcExt, lcValue, lc_CFG_Path, lcConfigLine, laDir(1,5) ; + LOCAL lcConfigFile, llExiste_CFG_EnDisco, laConfig(1), I, lcConfData, lcExt, lcValue, lc_CFG_Path, lcConfigLine, laDirInfo(1,5) ; , lo_CFG AS CL_CFG OF 'FOXBIN2PRG.PRG' ; , lo_Configuration AS Collection ; , loLang as CL_LANG OF 'FOXBIN2PRG.PRG' ; @@ -1278,12 +1299,26 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM lcConfigFile = .c_Foxbin2prg_ConfigFile tc_InputFile = EVL(tc_InputFile, .c_InputFile) .c_InputFile = tc_InputFile + tcInputFile_Type = EVL(tcInputFile_Type,'') + + *-- Determino el tipo de InputFile (Archivo o Directorio) + IF EMPTY(tcInputFile_Type) AND NOT EMPTY(tc_InputFile) + IF ADIR(laDirInfo, tc_InputFile, "D") = 1 AND SUBSTR( laDirInfo(1,5), 5, 1 ) = "D" THEN + tcInputFile_Type = C_FILETYPE_DIRECTORY + ELSE + tcInputFile_Type = C_FILETYPE_FILE + ENDIF + ENDIF IF .l_AllowMultiConfig AND .l_Main_CFG_Loaded AND NOT EMPTY(tc_InputFile) THEN *IF EMPTY(tc_InputFile) * ERROR loLang.C_FILE_NOT_FOUND_LOC + ': .c_InputFile = "' + tc_InputFile + '"' *ENDIF - lcConfigFile = FORCEPATH( 'foxbin2prg.cfg', JUSTPATH(tc_InputFile) ) + IF tcInputFile_Type == C_FILETYPE_DIRECTORY THEN + lcConfigFile = FORCEPATH( 'foxbin2prg.cfg', tc_InputFile ) + ELSE + lcConfigFile = FORCEPATH( 'foxbin2prg.cfg', JUSTPATH(tc_InputFile) ) + ENDIF ENDIF lo_Configuration = .o_Configuration @@ -1306,7 +1341,7 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM DO CASE CASE .n_CFG_Actual = 0 *-- Si no se encontró un CFG cacheado, se busca si existe un archivo CFG en disco - llExiste_CFG_EnDisco = ( ADIR( laDir, lcConfigFile ) = 1 ) + llExiste_CFG_EnDisco = ( ADIR( laDirInfo, lcConfigFile ) = 1 ) IF NOT llExiste_CFG_EnDisco .l_CFG_CachedAccess = .T. && Es cacheado porque sin archivo CFG usa config.interna @@ -1327,16 +1362,14 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM IF .l_AllowMultiConfig AND .l_ConfigEvaluated AND .l_Main_CFG_Loaded lo_CFG = CREATEOBJECT('CL_CFG') lo_Configuration.Add( lo_CFG, lc_CFG_Path ) - .n_CFG_Actual = lo_Configuration.Count ELSE lo_Configuration.Add( NULL, lc_CFG_Path ) && La NULL se carga solo cuando no hay Main_CFG_loaded todavía. - *.n_CFG_Actual = 0 - .n_CFG_Actual = lo_Configuration.Count ENDIF + .n_CFG_Actual = lo_Configuration.Count *lo_CFG.c_Foxbin2prg_FullPath = '' lo_CFG.c_Foxbin2prg_ConfigFile = lcConfigFile - *lo_CFG.c_CurDir = '' + *lo_CFG.c_CurDir = '' FOR I = 1 TO ALINES( laConfig, FILETOSTR( lcConfigFile ), 1+4 ) *laConfig(I) = LOWER( laConfig(I) ) @@ -1568,8 +1601,9 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM .writeLog( '> ' + UPPER(loLang.C_USING_THIS_SETTINGS_LOC) + ':' ) .writeLog( C_TAB + 'n_CFG_Actual: ' + TRANSFORM(.n_CFG_Actual) + ICASE(.n_CFG_Actual=1, ' [MASTER]', ' [SECONDARY]') ) - .writeLog( C_TAB + 'l_CFG_CachedAccess: ' + TRANSFORM(.l_CFG_CachedAccess) ; - + ' ( InputFile=[' + EVL(tc_InputFile,'') + '], CFG=[' + EVL(lo_CFG.c_Foxbin2prg_ConfigFile, '(Internal defaults)') + '] )' ) + .writeLog( C_TAB + 'l_CFG_CachedAccess: ' + TRANSFORM(.l_CFG_CachedAccess) ) + .writeLog( C_TAB + 'c_Foxbin2prg_ConfigFile: ' + TRANSFORM(EVL(lo_CFG.c_Foxbin2prg_ConfigFile, '(Internal defaults)') ) ) + .writeLog( C_TAB + 'tc_InputFile: ' + TRANSFORM(EVL(tc_InputFile,'') ) ) .writeLog( C_TAB + 'l_ShowProgress: ' + TRANSFORM(.l_ShowProgress) ) .writeLog( C_TAB + 'l_ShowErrors: ' + TRANSFORM(.l_ShowErrors) ) .writeLog( C_TAB + 'l_Recompile: ' + TRANSFORM(.l_Recompile) + ' (' + tcRecompile + ')' ) @@ -1826,7 +1860,7 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM , tcBackupLevels, tcClearUniqueID, tcOptimizeByFilestamp TRY - LOCAL I, lcPath, lnCodError, lcFileSpec, lcFile, laFiles(1,5), laDirInfo(1,5) ; + LOCAL I, lcPath, lnCodError, lcFileSpec, lcFile, laFiles(1,5), laDirInfo(1,5), lcInputFile_Type ; , lnFileCount, lcErrorInfo, lcErrorFile, lnPCount, laParams(1), lnConversionOption ; , loEx AS EXCEPTION ; , loFSO AS Scripting.FileSystemObject ; @@ -1836,11 +1870,13 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM WITH THIS AS c_foxbin2prg OF 'FOXBIN2PRG.PRG' lnCodError = 0 + loLang = _SCREEN.o_FoxBin2Prg_Lang loFSO = .o_FSO loWSH = .o_WSH DIMENSION .a_ProcessedFiles(1) .n_ProcessedFiles = 0 lnPCount = 0 + lcInputFile_Type = '' *-- 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 @@ -1853,9 +1889,20 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM * ENDFOR * EXIT *ENDIF + + *-- Determino el tipo de InputFile (Archivo o Directorio) + IF EMPTY(lcInputFile_Type) AND NOT EMPTY(tc_InputFile) + IF ADIR(laDirInfo, tc_InputFile, "D") = 1 AND SUBSTR( laDirInfo(1,5), 5, 1 ) = "D" THEN + *-- Ejemplo: "c:\desa\" + lcInputFile_Type = C_FILETYPE_DIRECTORY + ELSE + *-- Ejemplo: "c:\desa\*.scx", "c:\desa\file.ext", (lista de archivos) + lcInputFile_Type = C_FILETYPE_FILE + ENDIF + ENDIF - IF EMPTY(tcRecompile) AND NOT EMPTY(tc_InputFile) AND ADIR(laDirInfo, tc_InputFile, "D")=1 THEN - IF SUBSTR( laDirInfo(1,5), 5, 1 ) = "D" + IF EMPTY(tcRecompile) AND NOT EMPTY(lcInputFile_Type) THEN + IF lcInputFile_Type == C_FILETYPE_DIRECTORY THEN tcRecompile = tc_InputFile ELSE tcRecompile = JUSTPATH( tc_InputFile ) @@ -1887,11 +1934,8 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM .writeLog( ) *-- ARCHIVO DE CONFIGURACIÓN PRINCIPAL - - *IF NOT .l_ConfigEvaluated THEN .EvaluarConfiguracion( @tcDontShowProgress, @tcDontShowErrors, @tcNoTimestamps, @tcDebug, @tcRecompile, @tcBackupLevels ; - , @tcClearUniqueID, @tcOptimizeByFilestamp, @tc_InputFile ) - *ENDIF + , @tcClearUniqueID, @tcOptimizeByFilestamp, @tc_InputFile, @lcInputFile_Type ) loLang = _SCREEN.o_FoxBin2Prg_Lang @@ -1910,7 +1954,8 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM *-- EJECUCIÓN NORMAL - IF '-SHOWMSG' $ ('-' + tcType) AND NOT '-BIN2PRG' $ ('-' + tcType) AND NOT '-PRG2BIN' $ ('-' + tcType) AND DIRECTORY(tc_InputFile) + IF '-SHOWMSG' $ ('-' + tcType) AND NOT '-BIN2PRG' $ ('-' + tcType) AND NOT '-PRG2BIN' $ ('-' + tcType) ; + AND lcInputFile_Type == C_FILETYPE_DIRECTORY *-- Se seleccionó un directorio y se puede elegir: Bin2Txt, Txt2Bin y Nada .writeLog( loLang.C_INTERACTIVE_DIRECTORY_SELECTION_LOC ) loFrm_Interactive = CREATEOBJECT('frm_interactive') @@ -1929,7 +1974,6 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM OTHERWISE && None ERROR 1799 && Conversion Cancelled - EXIT ENDCASE ENDIF @@ -1941,7 +1985,7 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM *-- Evaluación de FileSpec de entrada DO CASE - CASE '*' $ JUSTEXT( tc_InputFile ) OR '?' $ JUSTEXT( tc_InputFile ) + CASE lcInputFile_Type == C_FILETYPE_FILE AND '*' $ JUSTEXT( tc_InputFile ) OR '?' $ JUSTEXT( tc_InputFile ) IF .l_ShowErrors *MESSAGEBOX( 'No se admiten extensiones * o ? porque es peligroso (se pueden pisar binarios con archivo xx2 vacíos).', 0+48+4096, 'FOXBIN2PRG: ERROR!!', 60000 ) MESSAGEBOX( loLang.C_ASTERISK_EXT_NOT_ALLOWED_LOC, 0+48+4096, loLang.C_FOXBIN2PRG_ERROR_CAPTION_LOC, 60000 ) @@ -1951,7 +1995,7 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM ENDIF - CASE '*' $ JUSTSTEM( tc_InputFile ) + CASE lcInputFile_Type == C_FILETYPE_FILE AND '*' $ JUSTSTEM( tc_InputFile ) *-- SE QUIEREN TODOS LOS ARCHIVOS DE UNA EXTENSIÓN lcFileSpec = FULLPATH( tc_InputFile ) @@ -1984,7 +2028,7 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM .writeLog( '> ' + loLang.C_OPTION_LOC + ': BIN2PRG' ) DO CASE - CASE DIRECTORY(tc_InputFile) + CASE lcInputFile_Type == C_FILETYPE_DIRECTORY *-- CONVERSION BIN2PRG DE UN DIRECTORIO Y SUBDIRECTORIOS .writeLog( '> InputFile ' + loLang.C_IS_A_DIRECTORY_LOC ) @@ -2037,7 +2081,7 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM .writeLog( '> ' + loLang.C_OPTION_LOC + ': PRG2BIN' ) DO CASE - CASE DIRECTORY(tc_InputFile) + CASE lcInputFile_Type == C_FILETYPE_DIRECTORY *-- CONVERSION PRG2BIN DE UN DIRECTORIO Y SUBDIRECTORIOS .writeLog( '> InputFile ' + loLang.C_IS_A_DIRECTORY_LOC ) @@ -2286,7 +2330,10 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM USE IN (SELECT("TABLABIN")) THIS.writeLog_Flush() - *THIS.descargar_frm_avance() + IF NOT THIS.l_ShowProgress + THIS.descargar_frm_avance() + *fdb* + ENDIF CD (JUSTPATH(THIS.c_CurDir)) DO CASE @@ -2656,7 +2703,7 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM *-- Logueo los errores IF NOT EMPTY(loConversor.c_TextErr) THEN - .writeErrorLog( PADR( 'ERRORS FOUND IN FILE [' + .c_InputFile + '] ', 100, '-' ) ) + .writeErrorLog( PADR( loLang.C_ERRORS_FOUND_IN_FILE_LOC + ' [' + .c_InputFile + '] ', 100, '-' ) ) .writeErrorLog( loConversor.c_TextErr ) .writeErrorLog( ) ENDIF @@ -3920,17 +3967,17 @@ DEFINE CLASS c_conversor_base AS SESSION *-- CONVIERTE UN DATO TIMESTAMP NUMERICO USADO POR LOS ARCHIVOS SCX/VCX/etc. EN TIPO DATETIME TRY LOCAL lcTimeStamp,lnYear,lnMonth,lnDay,lnHour,lnMinutes,lnSeconds,lcTime,lnHour,ltTimeStamp,lnResto ; - ,lcTimeStamp_Ret, laDir[1,5], loEx AS EXCEPTION + ,lcTimeStamp_Ret, laDirInfo[1,5], loEx AS EXCEPTION lcTimeStamp_Ret = '' IF EMPTY(tnTimeStamp) IF THIS.lFileMode - IF ADIR(laDir,THIS.c_InputFile)=0 + IF ADIR(laDirInfo,THIS.c_InputFile)=0 EXIT ENDIF - ltTimeStamp = EVALUATE( '{^' + DTOC(laDir(1,3)) + ' ' + TRANSFORM(laDir(1,4)) + '}' ) + ltTimeStamp = EVALUATE( '{^' + DTOC(laDirInfo(1,3)) + ' ' + TRANSFORM(laDirInfo(1,4)) + '}' ) *-- En mi arreglo, si la hora pasada tiene 32 segundos o más, redondeo al siguiente minuto, ya que *-- la descodificación posterior de GetTimeStamp tiene ese margen de error. @@ -7195,7 +7242,7 @@ DEFINE CLASS c_conversor_prg_a_vcx AS c_conversor_prg_a_bin EXIT ENDIF - .AvanceDelProceso( 'Generating Binary...', 0, lnCodeLines, 1 ) + .AvanceDelProceso( loLang.C_GENERATING_BINARY_LOC + '...', 0, lnCodeLines, 1 ) toFoxBin2Prg.doBackup( .F., .T., '', '', '' ) .createClasslib() .escribirArchivoBin( @toModulo, @toFoxBin2Prg ) @@ -21927,6 +21974,7 @@ DEFINE CLASS CL_LANG AS Custom C_ENDDEFINE_MARKER_NOT_FOUND_LOC = "Cannot find end marker [ENDDEFINE] of line <> for ID [<>]" C_END_MARKER_NOT_FOUND_LOC = "Cannot find end marker [<>] that closes start marker [<>] on line <>" C_END_OF_PROCESS_LOC = "End of Process" + C_ERRORS_FOUND_IN_FILE_LOC = "ERRORS FOUND IN FILE" C_EXTENSION_RECONFIGURATION_LOC = "Extension Reconfiguration:" C_EXTERNAL_CLASS_COUNT_DOES_NOT_MATCH_FOUND_CLASSES_LOC = "External class count (<>) does not match found classes (<>) for file [<>]" C_EXTERNAL_CLASS_NAME_WAS_NOT_FOUND_LOC = "External class was not found" @@ -21946,6 +21994,7 @@ DEFINE CLASS CL_LANG AS Custom C_FOXBIN2PRG_JUST_VFP_9_LOC = "FOXBIN2PRG is only for Visual FoxPro 9.0!" C_FOXBIN2PRG_WARN_CAPTION_LOC = "FOXBIN2PRG: WARNING!" C_GENERATED_FILE_SIZE_LOC = "Generated file size" + C_GENERATING_BINARY_LOC = "Generating Binary" C_INCLUDING_CLASS_LOC = "Including class" C_INTERACTIVE_DIRECTORY_SELECTION_LOC = "Interactive Directory Selection" C_IS_A_FILE_LOC = "is a FILE" @@ -21986,7 +22035,7 @@ DEFINE CLASS CL_LANG AS Custom LPARAMETERS tcLanguage TRY - LOCAL lcSys16, lnPosProg, lc_Foxbin2prg_FullPath, lc_Foxbin2prg_LangFile, laDir(1,5) ; + LOCAL lcSys16, lnPosProg, lc_Foxbin2prg_FullPath, lc_Foxbin2prg_LangFile, laDirInfo(1,5) ; , llLangFileExists, lcLangStr ; , loEx as Exception @@ -22005,7 +22054,7 @@ DEFINE CLASS CL_LANG AS Custom lc_Foxbin2prg_FullPath = SUBSTR( lcSys16, lnPosProg ) lc_Foxbin2prg_LangFile = FORCEEXT( lc_Foxbin2prg_FullPath, 'H' ) - llLangFileExists = ( ADIR( laDir, lc_Foxbin2prg_LangFile ) = 1 ) + llLangFileExists = ( ADIR( laDirInfo, lc_Foxbin2prg_LangFile ) = 1 ) ELSE .n_LanguageSelectedMethod = 1 && 1=Assigned by Parameter ENDIF @@ -22069,6 +22118,7 @@ DEFINE CLASS CL_LANG AS Custom .C_ENDDEFINE_MARKER_NOT_FOUND_LOC = "Vous ne trouvez pas marqueur de fin [ENDDEFINE] de la ligne <> ID [<>]" .C_END_MARKER_NOT_FOUND_LOC = "Vous ne trouvez pas fin marqueur [<>] qui ferme marqueur de début [<>] en ligne <>" .C_END_OF_PROCESS_LOC = "Fin du processus" + .C_ERRORS_FOUND_IN_FILE_LOC = "ERREURS TROUVÉ DANS LE FICHIER" .C_EXTENSION_RECONFIGURATION_LOC = "Extension Reconfiguration:" .C_EXTERNAL_CLASS_COUNT_DOES_NOT_MATCH_FOUND_CLASSES_LOC = "Nombre de classe externe (<>) ne correspond pas classes trouvées (<>) pour le fichier [<>]" .C_EXTERNAL_CLASS_NAME_WAS_NOT_FOUND_LOC = "Aucune classe externe est trouvé" @@ -22088,6 +22138,7 @@ DEFINE CLASS CL_LANG AS Custom .C_FOXBIN2PRG_JUST_VFP_9_LOC = "FOXBIN2PRG est seulement pour Visual FoxPro 9.0!" .C_FOXBIN2PRG_WARN_CAPTION_LOC = "FOXBIN2PRG: AVERTISSEMENT!" .C_GENERATED_FILE_SIZE_LOC = "Taille du fichier généré" + .C_GENERATING_BINARY_LOC = "Génération Binaire" .C_INCLUDING_CLASS_LOC = "Including class" .C_INTERACTIVE_DIRECTORY_SELECTION_LOC = "Sélection répertoire interactive" .C_IS_A_FILE_LOC = "est un FICHIER" @@ -22146,6 +22197,7 @@ DEFINE CLASS CL_LANG AS Custom .C_ENDDEFINE_MARKER_NOT_FOUND_LOC = "No se ha encontrado el marcador de fin [ENDDEFINE] de la línea <> para el identificador [<>]" .C_END_MARKER_NOT_FOUND_LOC = "No se ha encontrado el marcador de fin [<>] que cierra al marcador de inicio [<>] de la línea <>" .C_END_OF_PROCESS_LOC = "Fin del Proceso" + .C_ERRORS_FOUND_IN_FILE_LOC = "SE HAN ENCONTRADOS ERRORES EN EL ARCHIVO" .C_EXTENSION_RECONFIGURATION_LOC = "Reconfiguración de extensión:" .C_EXTERNAL_CLASS_COUNT_DOES_NOT_MATCH_FOUND_CLASSES_LOC = "El conteo de clases externas (<>) no coincide con la cantidad encontrada (<>) para el archivo [<>]" .C_EXTERNAL_CLASS_NAME_WAS_NOT_FOUND_LOC = "No se encontró la clase externa" @@ -22165,6 +22217,7 @@ DEFINE CLASS CL_LANG AS Custom .C_FOXBIN2PRG_JUST_VFP_9_LOC = "¡FOXBIN2PRG es solo para Visual FoxPro 9.0!" .C_FOXBIN2PRG_WARN_CAPTION_LOC = "FOXBIN2PRG: ¡ATENCIÓN!" .C_GENERATED_FILE_SIZE_LOC = "Tamaño del archivo generado" + .C_GENERATING_BINARY_LOC = "Generando Binario" .C_MENU_NOT_IN_VFP9_FORMAT_LOC = "El Menú [<>] NO está en formato VFP 9! - Por favor convertirlo a VFP 9 con MODIFY MENU '<>'" .C_INCLUDING_CLASS_LOC = "Incluyendo clase" .C_INTERACTIVE_DIRECTORY_SELECTION_LOC = "Selección Interactiva de Directorio" @@ -22223,15 +22276,16 @@ DEFINE CLASS CL_LANG AS Custom .C_ENDDEFINE_MARKER_NOT_FOUND_LOC = "Kann keinen Ende Marker [ENDDEFINE] in Zeile <> für die ID [<>] finden" .C_END_MARKER_NOT_FOUND_LOC = "Kann keinen Ende Marker [<>] welcher den Start Marker [<>] in Zeile <> schließt" .C_END_OF_PROCESS_LOC = "Ende der Prozess" + .C_ERRORS_FOUND_IN_FILE_LOC = "FEHLER IN FILE GEFUNDEN" + .C_EXTENSION_RECONFIGURATION_LOC = "Erweiterungsneukonfiguration:" + .C_EXTERNAL_CLASS_COUNT_DOES_NOT_MATCH_FOUND_CLASSES_LOC = "Externe Klassenzahl (<< toModulo._ExternalClasses_Count >>) nicht gefunden Klassen entsprechen (<< toModulo._Clases_Count >>) für Datei [<< toFoxBin2Prg.c_InputFile >>]" + .C_EXTERNAL_CLASS_NAME_WAS_NOT_FOUND_LOC = "Keine externe Klasse gefunden" + .C_EXTERNAL_PARAMETERS_LOC = "EXTERNE PARAMETER" .C_FIELD_NOT_FOUND_ON_FILE_STRUCTURE_LOC = "Feld [<>] nicht in der Struktur von Datei <> gefunden" .C_FILE_DOESNT_EXIST_LOC = "Datei existiert nicht:" .C_FILE_NAME_IS_NOT_SUPPORTED_LOC = "Datei [<<.c_InputFile>>] wird nicht unterstützt" .C_FILE_NOT_FOUND_LOC = "Datei nicht gefunden" .C_FILENAME_LOC = "Datei" - .C_EXTENSION_RECONFIGURATION_LOC = "Erweiterungsneukonfiguration:" - .C_EXTERNAL_CLASS_COUNT_DOES_NOT_MATCH_FOUND_CLASSES_LOC = "Externe Klassenzahl (<< toModulo._ExternalClasses_Count >>) nicht gefunden Klassen entsprechen (<< toModulo._Clases_Count >>) für Datei [<< toFoxBin2Prg.c_InputFile >>]" - .C_EXTERNAL_CLASS_NAME_WAS_NOT_FOUND_LOC = "Keine externe Klasse gefunden" - .C_EXTERNAL_PARAMETERS_LOC = "EXTERNE PARAMETER" .C_FOXBIN2PRG_ERROR_CAPTION_LOC = "FOXBIN2PRG: FEHLER!!" .C_FOXBIN2PRG_INFO_SINTAX_LOC = "FOXBIN2PRG: SYNTAX INFO" .C_FOXBIN2PRG_INFO_SINTAX_EXAMPLE_LOC = "FOXBIN2PRG [,cType ,cTextName ,cGenText ,cDontShowErrors ,cDebug, cDontShowProgress, cOriginalFileName, cRecompile, cNoTimestamps]" + CR_LF + CR_LF ; @@ -22242,6 +22296,7 @@ DEFINE CLASS CL_LANG AS Custom .C_FOXBIN2PRG_JUST_VFP_9_LOC = "FOXBIN2PRG ist nur für Visual FoxPro 9.0!" .C_FOXBIN2PRG_WARN_CAPTION_LOC = "FOXBIN2PRG: WARNUNG!" .C_GENERATED_FILE_SIZE_LOC = "Generierte Dateigröße" + .C_GENERATING_BINARY_LOC = "Gene Binary" .C_INCLUDING_CLASS_LOC = "einschließlich Klasse" .C_INTERACTIVE_DIRECTORY_SELECTION_LOC = "Auswählen interaktive Verzeichnis" .C_IS_A_FILE_LOC = "ist eine DATEI" From 86a0f1032faa07e9b9545e0cd6ae67a59d643012 Mon Sep 17 00:00:00 2001 From: fdbozzo Date: Sun, 21 Dec 2014 02:01:02 +0100 Subject: [PATCH 06/23] =?UTF-8?q?Changeset:=20573=20fdbozzo=20-=2020/12/20?= =?UTF-8?q?14=2013:44:27:=20-=20Arreglo=20de=20multiconfiguraci=C3=B3n=20c?= =?UTF-8?q?uando=20se=20ejecuta=20desde=20scripts=20vbs?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- foxbin2prg.prg | 47 +++++++++++++++++++++++------------------------ 1 file changed, 23 insertions(+), 24 deletions(-) diff --git a/foxbin2prg.prg b/foxbin2prg.prg index f1085bb..d9e6abd 100644 --- a/foxbin2prg.prg +++ b/foxbin2prg.prg @@ -1451,35 +1451,35 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM CASE LEFT( laConfig(I), 17 ) == LOWER('AllowMultiConfig:') lcValue = ALLTRIM( SUBSTR( laConfig(I), 18 ) ) IF INLIST( lcValue, '0', '1' ) THEN - .l_AllowMultiConfig = ( TRANSFORM(lcValue) == '1' ) + lo_CFG.l_AllowMultiConfig = ( TRANSFORM(lcValue) == '1' ) .writeLog( C_TAB + JUSTFNAME(lcConfigFile) + ' > AllowMultiConfig: ' + TRANSFORM(lcValue) ) ENDIF CASE LEFT( laConfig(I), 16 ) == LOWER('UseClassPerFile:') lcValue = ALLTRIM( SUBSTR( laConfig(I), 17 ) ) IF INLIST( lcValue, '0', '1' ) THEN - .l_UseClassPerFile = ( TRANSFORM(lcValue) == '1' ) + lo_CFG.l_UseClassPerFile = ( TRANSFORM(lcValue) == '1' ) .writeLog( C_TAB + JUSTFNAME(lcConfigFile) + ' > UseClassPerFile: ' + TRANSFORM(lcValue) ) ENDIF CASE LEFT( laConfig(I), 18 ) == LOWER('ClassPerFileCheck:') lcValue = ALLTRIM( SUBSTR( laConfig(I), 19 ) ) IF INLIST( lcValue, '0', '1' ) THEN - .l_ClassPerFileCheck = ( TRANSFORM(lcValue) == '1' ) + lo_CFG.l_ClassPerFileCheck = ( TRANSFORM(lcValue) == '1' ) .writeLog( C_TAB + JUSTFNAME(lcConfigFile) + ' > ClassPerFileCheck: ' + TRANSFORM(lcValue) ) ENDIF CASE LEFT( laConfig(I), 27 ) == LOWER('RedirectClassPerFileToMain:') lcValue = ALLTRIM( SUBSTR( laConfig(I), 28 ) ) IF INLIST( lcValue, '0', '1' ) THEN - .l_RedirectClassPerFileToMain = ( TRANSFORM(lcValue) == '1' ) + lo_CFG.l_RedirectClassPerFileToMain = ( TRANSFORM(lcValue) == '1' ) .writeLog( C_TAB + JUSTFNAME(lcConfigFile) + ' > RedirectClassPerFileToMain: ' + 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' ) + lo_CFG.l_DropNullCharsFromCode = ( TRANSFORM(lcValue) == '1' ) .writeLog( C_TAB + JUSTFNAME(lcConfigFile) + ' > DropNullCharsFromCode: ' + TRANSFORM(lcValue) ) ENDIF @@ -1873,15 +1873,15 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM loLang = _SCREEN.o_FoxBin2Prg_Lang loFSO = .o_FSO loWSH = .o_WSH - DIMENSION .a_ProcessedFiles(1) - .n_ProcessedFiles = 0 + *DIMENSION .a_ProcessedFiles(1) + *.n_ProcessedFiles = 0 lnPCount = 0 lcInputFile_Type = '' *-- 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 * .writeLog( 'Params.Externos: ' + TRANSFORM(lnPCount,'@L ##') ) * FOR I = 1 TO lnPCount @@ -1889,7 +1889,7 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM * ENDFOR * EXIT *ENDIF - + *-- Determino el tipo de InputFile (Archivo o Directorio) IF EMPTY(lcInputFile_Type) AND NOT EMPTY(tc_InputFile) IF ADIR(laDirInfo, tc_InputFile, "D") = 1 AND SUBSTR( laDirInfo(1,5), 5, 1 ) = "D" THEN @@ -1953,7 +1953,7 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM OTHERWISE *-- EJECUCIÓN NORMAL - + IF '-SHOWMSG' $ ('-' + tcType) AND NOT '-BIN2PRG' $ ('-' + tcType) AND NOT '-PRG2BIN' $ ('-' + tcType) ; AND lcInputFile_Type == C_FILETYPE_DIRECTORY *-- Se seleccionó un directorio y se puede elegir: Bin2Txt, Txt2Bin y Nada @@ -1964,7 +1964,7 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM lnConversionOption = loFrm_Interactive.n_ConversionType loFrm_Interactive.Release() loFrm_Interactive = NULL - + DO CASE CASE lnConversionOption = 1 && Bin2Txt tcType = tcType + '-BIN2PRG' @@ -2295,7 +2295,7 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM CATCH TO toEx lnCodError = toEx.ERRORNO - + IF VARTYPE(loLang) <> 'O' THEN loLang = CREATEOBJECT("CL_LANG","EN") ENDIF @@ -2304,8 +2304,8 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM toEx.UserValue = toEx.UserValue + 'tc_InputDir = [' + TRANSFORM(tc_InputFile) + ']' + CR_LF THIS.l_ShowErrors = .F. && La opción "SHOWMSG" muestra su propio mensaje ENDIF - - toEx.UserValue = toEx.UserValue + 'tc_InputFile = ' + TRANSFORM(tc_InputFile) + CR_LF + + toEx.USERVALUE = toEx.USERVALUE + 'tc_InputFile = ' + TRANSFORM(tc_InputFile) + CR_LF THIS.ejecutar_WriteErrorLog( @toEx, @lcErrorInfo ) @@ -2330,9 +2330,8 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM USE IN (SELECT("TABLABIN")) THIS.writeLog_Flush() - IF NOT THIS.l_ShowProgress + IF THIS.l_ShowProgress THIS.descargar_frm_avance() - *fdb* ENDIF CD (JUSTPATH(THIS.c_CurDir)) @@ -2355,8 +2354,8 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM ENDCASE - *CASE THIS.l_Debug - * THIS.writeErrorLog_Flush( ) + *CASE THIS.l_Debug + * THIS.writeErrorLog_Flush( ) ENDCASE @@ -2441,7 +2440,7 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM ELSE lc_BaseFile = FORCEPATH( FORCEEXT( JUSTSTEM( JUSTSTEM(.c_InputFile) ), JUSTEXT(.c_InputFile)) , JUSTPATH(.c_InputFile) ) ENDIF - + IF .n_ProcessedFiles > 0 THEN *-- Buscar si fue procesado antes IF ASCAN( .a_ProcessedFiles, lc_BaseFile, 1, 0, 0, 1+2+4 ) > 0 THEN @@ -2450,7 +2449,7 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM EXIT ENDIF ENDIF - + .n_ProcessedFiles = .n_ProcessedFiles + 1 DIMENSION .a_ProcessedFiles(.n_ProcessedFiles) .a_ProcessedFiles(.n_ProcessedFiles) = lc_BaseFile @@ -2987,7 +2986,7 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM lsBuffer = STRTRAN(lsBuffer, '" ', '"'+CHR(13)+CHR(10), 1, 1) lsBuffer = STRTRAN(lsBuffer, CHR(0), ' ') tnPCount = ALINES( taParams, lsBuffer, 4 ) - + IF tnPCount > 1 THEN ADEL( taParams, 1 ) tnPCount = tnPCount - 1 @@ -6860,7 +6859,7 @@ 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) @@ -6977,7 +6976,7 @@ DEFINE CLASS c_conversor_prg_a_bin AS c_conversor_base ENDFOR .verificar_CLASES_EXTERNAS( @toModulo, @toFoxBin2Prg ) - + ENDIF ENDWITH && THIS @@ -7202,7 +7201,7 @@ DEFINE CLASS c_conversor_prg_a_vcx AS c_conversor_prg_a_bin lcInputFile = FORCEPATH( JUSTSTEM( JUSTSTEM(.c_InputFile) ), JUSTPATH(.c_InputFile) ) + '.*.' + JUSTEXT(.c_InputFile) lnFileCount = ADIR( laFiles, lcInputFile, "", 1 ) ASORT( laFiles, 1, 0, 0, 1) - + FOR I = 1 TO lnFileCount lcInputFile_Class = FORCEPATH( JUSTSTEM( laFiles(I,1) ), JUSTPATH( .c_InputFile ) ) + '.' + JUSTEXT( .c_InputFile ) From f737c1473e1a41316cffaa4311bc596d24b46445 Mon Sep 17 00:00:00 2001 From: fdbozzo Date: Sun, 21 Dec 2014 03:02:13 +0100 Subject: [PATCH 07/23] =?UTF-8?q?Changeset:=20574=20fdbozzo=20-=2021/12/20?= =?UTF-8?q?14=2002:01:03:=20-=20Arreglo=20del=20manejo=20de=20errores=20en?= =?UTF-8?q?=20los=20scripts=20vbs=20y=20mejora=20de=20localizaci=C3=B3n=20?= =?UTF-8?q?de=20mensajes?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Convert_VFP9_BIN_2_PRG.vbs | 23 +++++++++++------------ Convert_VFP9_PRG_2_BIN.vbs | 34 ++++++++++++++++------------------ VFP9_FoxBin2Prg.vbs | 9 +++++---- foxbin2prg.prg | 3 --- 4 files changed, 32 insertions(+), 37 deletions(-) diff --git a/Convert_VFP9_BIN_2_PRG.vbs b/Convert_VFP9_BIN_2_PRG.vbs index cf356c6..20dd635 100644 --- a/Convert_VFP9_BIN_2_PRG.vbs +++ b/Convert_VFP9_BIN_2_PRG.vbs @@ -13,7 +13,7 @@ ' - Ahora puede seleccionar archivos o directorios, pulsar click derecho y "Enviar a" FoxBin2prg para conversiones batch '--------------------------------------------------------------------------------------------------- Const ForReading = 1 -Dim WSHShell, FileSystemObject, cEndOfProcessMsg, cWithErrorsMsg, cConvCancelByUserMsg +Dim WSHShell, FileSystemObject, cEndOfProcessMsg, cWithErrorsMsg, cConvCancelByUserMsg, nProcessedFilesCount Dim oVFP9, nExitCode, cEXETool, cCMD, nDebug, lcExt, foxbin2prg_cfg, aFiles(), nFile_Count Dim i, x, str_cfg, aConf, cErrMsg, cFlagGenerateLog, cFlagDontShowErrMsg, cFlagJustShowCall, cFlagRecompile, cFlagNoTimestamps, cErrFile Set WSHShell = WScript.CreateObject("WScript.Shell") @@ -93,7 +93,7 @@ Else If nDebug = 0 Or nDebug = 2 Then cCMD = "oFoxBin2prg.ejecutar( '" & aFiles(i) & "' )" Else - cCMD = "oFoxBin2prg.ejecutar( '" & aFiles(i) & "','0','0','0'," _ + cCMD = "oFoxBin2prg.ejecutar( '" & aFiles(i) & "','BIN2PRG','0','0'," _ & cFlagDontShowErrMsg & "," & cFlagGenerateLog & ",'1','','',.F.,''," _ & cFlagRecompile & "," & cFlagNoTimestamps & " )" End If @@ -101,8 +101,7 @@ Else If cFlagJustShowCall = "1" Then MsgBox cCMD, 64, "PARAMETERS" Else - oVFP9.DoCmd( cCMD ) - nExitCode = oVFP9.Eval("_SCREEN.ExitCode") + nExitCode = oVFP9.Eval(cCMD) End If If nExitCode = 1799 Then 'Conversion cancelled by user @@ -114,20 +113,21 @@ Else cEndOfProcessMsg = oVFP9.Eval("_SCREEN.o_FoxBin2Prg_Lang.C_END_OF_PROCESS_LOC") cWithErrorsMsg = oVFP9.Eval("_SCREEN.o_FoxBin2Prg_Lang.C_WITH_ERRORS_LOC") cConvCancelByUserMsg = oVFP9.Eval("_SCREEN.o_FoxBin2Prg_Lang.C_CONVERSION_CANCELLED_BY_USER_LOC") + nProcessedFilesCount = oVFP9.Eval("oFoxBin2prg.n_ProcessedFilesCount") If nExitCode = 1799 Then - MsgBox cConvCancelByUserMsg & "!", 48+4096, WScript.ScriptName & " (" & oVFP9.Eval("oFoxBin2prg.c_FB2PRG_EXE_Version") & ")" + MsgBox cConvCancelByUserMsg & "! [p:" & nProcessedFilesCount & "]", 48+4096, WScript.ScriptName & " (" & oVFP9.Eval("oFoxBin2prg.c_FB2PRG_EXE_Version") & ")" oVFP9.DoCmd("oFoxBin2prg.writeErrorLog_Flush()") cErrFile = oVFP9.Eval("oFoxBin2prg.c_ErrorLogFile") WSHShell.run cErrFile ElseIf oVFP9.Eval("oFoxBin2prg.l_Error") Then - MsgBox cEndOfProcessMsg & "! (" & cWithErrorsMsg & ")", 48+4096, WScript.ScriptName & " (" & oVFP9.Eval("oFoxBin2prg.c_FB2PRG_EXE_Version") & ")" + MsgBox cEndOfProcessMsg & "! (" & cWithErrorsMsg & ") [p:" & nProcessedFilesCount & "]", 48+4096, WScript.ScriptName & " (" & oVFP9.Eval("oFoxBin2prg.c_FB2PRG_EXE_Version") & ")" oVFP9.DoCmd("oFoxBin2prg.writeErrorLog_Flush()") cErrFile = oVFP9.Eval("oFoxBin2prg.c_ErrorLogFile") WSHShell.run cErrFile Else - MsgBox cEndOfProcessMsg & "!", 64+4096, WScript.ScriptName & " (" & oVFP9.Eval("oFoxBin2prg.c_FB2PRG_EXE_Version") & ")" + MsgBox cEndOfProcessMsg & "! [p:" & nProcessedFilesCount & "]", 64+4096, WScript.ScriptName & " (" & oVFP9.Eval("oFoxBin2prg.c_FB2PRG_EXE_Version") & ")" End If End If @@ -159,18 +159,17 @@ End Sub Private Sub evaluateFile( tcFile ) - lcExt = UCase( FileSystemObject.GetExtensionName( tcFile ) ) - oVFP9.SetVar "gc_Ext", lcExt - oVFP9.DoCmd( "oFoxBin2prg.EvaluarConfiguracion( '1', '1', '', '', '', '', '', '', '" & tcFile & "' )" ) + 'lcExt = UCase( FileSystemObject.GetExtensionName( tcFile ) ) + 'oVFP9.DoCmd( "oFoxBin2prg.EvaluarConfiguracion( '1', '1', '', '', '', '', '', '', '" & tcFile & "' )" ) 'PROCEDURE EvaluarConfiguracion ' LPARAMETERS tcDontShowProgress, tcDontShowErrors, tcFlagNoTimestamps, tcDebug, tcRecompile, tcExtraBackupLevels ; ' , tcClearUniqueID, tcOptimizeByFilestamp, tc_InputFile - If oVFP9.Eval("oFoxBin2prg.TieneSoporte_Bin2Prg(gc_Ext)") Then + 'If oVFP9.Eval("oFoxBin2prg.TieneSoporte_Bin2Prg('" & lcExt & "')") Then nFile_Count = nFile_Count + 1 ReDim Preserve aFiles(nFile_Count) aFiles(nFile_Count) = tcFile - End If + 'End If End Sub diff --git a/Convert_VFP9_PRG_2_BIN.vbs b/Convert_VFP9_PRG_2_BIN.vbs index 234b647..df387a8 100644 --- a/Convert_VFP9_PRG_2_BIN.vbs +++ b/Convert_VFP9_PRG_2_BIN.vbs @@ -13,7 +13,7 @@ ' - Ahora puede seleccionar archivos o directorios, pulsar click derecho y "Enviar a" FoxBin2prg para conversiones batch '--------------------------------------------------------------------------------------------------- Const ForReading = 1 -Dim WSHShell, FileSystemObject, cEndOfProcessMsg, cWithErrorsMsg, cConvCancelByUserMsg +Dim WSHShell, FileSystemObject, cEndOfProcessMsg, cWithErrorsMsg, cConvCancelByUserMsg, nProcessedFilesCount Dim oVFP9, nExitCode, cEXETool, cCMD, nDebug, lcExt, foxbin2prg_cfg, aFiles(), nFile_Count Dim i, x, str_cfg, aConf, cErrMsg, cFlagGenerateLog, cFlagDontShowErrMsg, cFlagJustShowCall, cFlagRecompile, cFlagNoTimestamps, cErrFile Set WSHShell = WScript.CreateObject("WScript.Shell") @@ -99,7 +99,7 @@ Else If nDebug = 0 Or nDebug = 2 Then cCMD = "oFoxBin2prg.ejecutar( '" & aFiles(i) & "' )" Else - cCMD = "oFoxBin2prg.ejecutar( '" & aFiles(i) & "','0','0','0'," _ + cCMD = "oFoxBin2prg.ejecutar( '" & aFiles(i) & "','PRG2BIN','0','0'," _ & cFlagDontShowErrMsg & "," & cFlagGenerateLog & ",'1','','',.F.,''," _ & cFlagRecompile & "," & cFlagNoTimestamps & " )" End If @@ -107,8 +107,7 @@ Else If cFlagJustShowCall = "1" Then MsgBox cCMD, 64, "PARAMETERS" Else - oVFP9.DoCmd( cCMD ) - nExitCode = oVFP9.Eval("_SCREEN.ExitCode") + nExitCode = oVFP9.Eval(cCMD) End If If nExitCode = 1799 Then 'Conversion cancelled by user @@ -120,20 +119,21 @@ Else cEndOfProcessMsg = oVFP9.Eval("_SCREEN.o_FoxBin2Prg_Lang.C_END_OF_PROCESS_LOC") cWithErrorsMsg = oVFP9.Eval("_SCREEN.o_FoxBin2Prg_Lang.C_WITH_ERRORS_LOC") cConvCancelByUserMsg = oVFP9.Eval("_SCREEN.o_FoxBin2Prg_Lang.C_CONVERSION_CANCELLED_BY_USER_LOC") + nProcessedFilesCount = oVFP9.Eval("oFoxBin2prg.n_ProcessedFilesCount") If nExitCode = 1799 Then - MsgBox cConvCancelByUserMsg & "!", 48+4096, WScript.ScriptName & " (" & oVFP9.Eval("oFoxBin2prg.c_FB2PRG_EXE_Version") & ")" + MsgBox cConvCancelByUserMsg & "! [p:" & nProcessedFilesCount & "]", 48+4096, WScript.ScriptName & " (" & oVFP9.Eval("oFoxBin2prg.c_FB2PRG_EXE_Version") & ")" oVFP9.DoCmd("oFoxBin2prg.writeErrorLog_Flush()") cErrFile = oVFP9.Eval("oFoxBin2prg.c_ErrorLogFile") WSHShell.run cErrFile ElseIf oVFP9.Eval("oFoxBin2prg.l_Error") Then - MsgBox cEndOfProcessMsg & "! (" & cWithErrorsMsg & ")", 48+4096, WScript.ScriptName & " (" & oVFP9.Eval("oFoxBin2prg.c_FB2PRG_EXE_Version") & ")" + MsgBox cEndOfProcessMsg & "! (" & cWithErrorsMsg & ") [p:" & nProcessedFilesCount & "]", 48+4096, WScript.ScriptName & " (" & oVFP9.Eval("oFoxBin2prg.c_FB2PRG_EXE_Version") & ")" oVFP9.DoCmd("oFoxBin2prg.writeErrorLog_Flush()") cErrFile = oVFP9.Eval("oFoxBin2prg.c_ErrorLogFile") WSHShell.run cErrFile Else - MsgBox cEndOfProcessMsg & "!", 64+4096, WScript.ScriptName & " (" & oVFP9.Eval("oFoxBin2prg.c_FB2PRG_EXE_Version") & ")" + MsgBox cEndOfProcessMsg & "! [p:" & nProcessedFilesCount & "]", 64+4096, WScript.ScriptName & " (" & oVFP9.Eval("oFoxBin2prg.c_FB2PRG_EXE_Version") & ")" End If End If @@ -165,24 +165,22 @@ End Sub Private Sub evaluateFile( tcFile ) - lcExt = UCase( FileSystemObject.GetExtensionName( tcFile ) ) - lcFileName = FileSystemObject.GetFileName( tcFile ) - laPoints = Split( lcFileName, "." ) - lnPoints = UBound(laPoints) + 'lcExt = UCase( FileSystemObject.GetExtensionName( tcFile ) ) + 'lcFileName = FileSystemObject.GetFileName( tcFile ) + 'laPoints = Split( lcFileName, "." ) + 'lnPoints = UBound(laPoints) '-- No proceso los archivos con más de un punto (clases en archivos individuales) por performance - If lnPoints = 1 Then - oVFP9.SetVar "gc_Ext", lcExt - + 'If lnPoints = 1 Then 'PROCEDURE EvaluarConfiguracion ' LPARAMETERS tcDontShowProgress, tcDontShowErrors, tcFlagNoTimestamps, tcDebug, tcRecompile, tcExtraBackupLevels ; ' , tcClearUniqueID, tcOptimizeByFilestamp, tc_InputFile - oVFP9.DoCmd( "oFoxBin2prg.EvaluarConfiguracion( '1', '1', '', '', '', '', '', '', '" & tcFile & "' )" ) - If oVFP9.Eval("oFoxBin2prg.TieneSoporte_Prg2Bin(gc_Ext)") Then + 'oVFP9.DoCmd( "oFoxBin2prg.EvaluarConfiguracion( '1', '1', '', '', '', '', '', '', '" & tcFile & "' )" ) + 'If oVFP9.Eval("oFoxBin2prg.TieneSoporte_Prg2Bin('" & lcExt & "')") Then nFile_Count = nFile_Count + 1 ReDim Preserve aFiles(nFile_Count) aFiles(nFile_Count) = tcFile - End If - End If + 'End If + 'End If End Sub diff --git a/VFP9_FoxBin2Prg.vbs b/VFP9_FoxBin2Prg.vbs index 932a5fe..27aa407 100644 --- a/VFP9_FoxBin2Prg.vbs +++ b/VFP9_FoxBin2Prg.vbs @@ -13,7 +13,7 @@ ' en la carpeta "SendTo" del usuario ' - Ahora puede seleccionar archivos o directorios, pulsar click derecho y "Enviar a" FoxBin2prg para conversiones batch '--------------------------------------------------------------------------------------------------- -Dim WSHShell, FileSystemObject, cEndOfProcessMsg, cWithErrorsMsg, cConvCancelByUserMsg +Dim WSHShell, FileSystemObject, cEndOfProcessMsg, cWithErrorsMsg, cConvCancelByUserMsg, nProcessedFilesCount Dim nExitCode, cEXETool, cEXETool2, nDebug Set wshShell = CreateObject( "WScript.Shell" ) Set FileSystemObject = WScript.CreateObject("Scripting.FileSystemObject") @@ -104,20 +104,21 @@ Else cEndOfProcessMsg = oVFP9.Eval("_SCREEN.o_FoxBin2Prg_Lang.C_END_OF_PROCESS_LOC") cWithErrorsMsg = oVFP9.Eval("_SCREEN.o_FoxBin2Prg_Lang.C_WITH_ERRORS_LOC") cConvCancelByUserMsg = oVFP9.Eval("_SCREEN.o_FoxBin2Prg_Lang.C_CONVERSION_CANCELLED_BY_USER_LOC") + nProcessedFilesCount = oVFP9.Eval("oFoxBin2prg.n_ProcessedFilesCount") If nExitCode = 1799 Then - MsgBox cConvCancelByUserMsg & "!", 48+4096, WScript.ScriptName & " (" & oVFP9.Eval("oFoxBin2prg.c_FB2PRG_EXE_Version") & ")" + MsgBox cConvCancelByUserMsg & "! [p:" & nProcessedFilesCount & "]", 48+4096, WScript.ScriptName & " (" & oVFP9.Eval("oFoxBin2prg.c_FB2PRG_EXE_Version") & ")" oVFP9.DoCmd("oFoxBin2prg.writeErrorLog_Flush()") cErrFile = oVFP9.Eval("oFoxBin2prg.c_ErrorLogFile") WSHShell.run cErrFile ElseIf oVFP9.Eval("oFoxBin2prg.l_Error") Then - MsgBox cEndOfProcessMsg & "! (" & cWithErrorsMsg & ")", 48+4096, WScript.ScriptName & " (" & oVFP9.Eval("oFoxBin2prg.c_FB2PRG_EXE_Version") & ")" + MsgBox cEndOfProcessMsg & "! (" & cWithErrorsMsg & ") [p:" & nProcessedFilesCount & "]", 48+4096, WScript.ScriptName & " (" & oVFP9.Eval("oFoxBin2prg.c_FB2PRG_EXE_Version") & ")" oVFP9.DoCmd("oFoxBin2prg.writeErrorLog_Flush()") cErrFile = oVFP9.Eval("oFoxBin2prg.c_ErrorLogFile") WSHShell.run cErrFile Else - MsgBox cEndOfProcessMsg & "!", 64+4096, WScript.ScriptName & " (" & oVFP9.Eval("oFoxBin2prg.c_FB2PRG_EXE_Version") & ")" + MsgBox cEndOfProcessMsg & "! [p:" & nProcessedFilesCount & "]", 64+4096, WScript.ScriptName & " (" & oVFP9.Eval("oFoxBin2prg.c_FB2PRG_EXE_Version") & ")" End If End If diff --git a/foxbin2prg.prg b/foxbin2prg.prg index d9e6abd..4f6c467 100644 --- a/foxbin2prg.prg +++ b/foxbin2prg.prg @@ -2354,9 +2354,6 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM ENDCASE - *CASE THIS.l_Debug - * THIS.writeErrorLog_Flush( ) - ENDCASE STORE NULL TO loFSO, loWSH From fc9c572679dcb1e3956ca487a457707afa9c6bf1 Mon Sep 17 00:00:00 2001 From: fdbozzo Date: Sun, 21 Dec 2014 17:18:22 +0100 Subject: [PATCH 08/23] Changeset: 575 fdbozzo - 21/12/2014 03:02:13: - Arreglo del CFG por defecto --- foxbin2prg.prg | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/foxbin2prg.prg b/foxbin2prg.prg index 4f6c467..44f9b35 100644 --- a/foxbin2prg.prg +++ b/foxbin2prg.prg @@ -1349,7 +1349,8 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM CASE ISNULL( .o_Configuration( .n_CFG_Actual ) ) *-- Si existe una configuración y es NULL, se usa la predeterminada - *.n_CFG_Actual = 0 + .n_CFG_Actual = 0 + lo_CFG = THIS ENDCASE @@ -1366,13 +1367,12 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM lo_Configuration.Add( NULL, lc_CFG_Path ) && La NULL se carga solo cuando no hay Main_CFG_loaded todavía. ENDIF - .n_CFG_Actual = lo_Configuration.Count + .n_CFG_Actual = lo_Configuration.Count *lo_CFG.c_Foxbin2prg_FullPath = '' lo_CFG.c_Foxbin2prg_ConfigFile = lcConfigFile *lo_CFG.c_CurDir = '' FOR I = 1 TO ALINES( laConfig, FILETOSTR( lcConfigFile ), 1+4 ) - *laConfig(I) = LOWER( laConfig(I) ) .set_Line( @lcConfigLine, @laConfig, I ) .get_SeparatedLineAndComment( @lcConfigLine ) laConfig(I) = LOWER( lcConfigLine ) @@ -1591,7 +1591,7 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM IF INLIST( TRANSFORM(tcDebug), '0', '1' ) THEN lo_CFG.l_Debug = (TRANSFORM(tcDebug)=='1') ENDIF - tcExtraBackupLevels = EVL( tcExtraBackupLevels, TRANSFORM( lo_CFG.n_ExtraBackupLevels ) ) + tcExtraBackupLevels = EVL( tcExtraBackupLevels, TRANSFORM( .n_ExtraBackupLevels ) ) IF ISDIGIT(tcExtraBackupLevels) lo_CFG.n_ExtraBackupLevels = INT( VAL( TRANSFORM(tcExtraBackupLevels) ) ) ENDIF From b835631e72ee88cfe61316878dc1cdd272358f08 Mon Sep 17 00:00:00 2001 From: fdbozzo Date: Sun, 21 Dec 2014 17:24:33 +0100 Subject: [PATCH 09/23] =?UTF-8?q?Changeset:=20576=20fdbozzo=20-=2021/12/20?= =?UTF-8?q?14=2017:18:22:=20-=20Actualizaci=C3=B3n=20de=20la=20versi=C3=B3?= =?UTF-8?q?n=20del=20proyecto=20PJX?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- foxbin2prg.pj2 | 2 +- foxbin2prg.pjt | Bin 624170 -> 677563 bytes foxbin2prg.pjx | Bin 9123 -> 9123 bytes 3 files changed, 1 insertion(+), 1 deletion(-) diff --git a/foxbin2prg.pj2 b/foxbin2prg.pj2 index ea82618..c1c9b82 100644 --- a/foxbin2prg.pj2 +++ b/foxbin2prg.pj2 @@ -26,7 +26,7 @@ _LegalTrademark = "Creative Commons 4: Reconocimiento - CompartirIgual (by-sa): _ProductName = "FOXBIN2PRG" _MajorVer = "1" _MinorVer = "19" -_Revision = "38" +_Revision = "39" _LanguageID = "1034" _AutoIncrement = "0" * diff --git a/foxbin2prg.pjt b/foxbin2prg.pjt index 34f7a7f0640b496ce5dfcb5b3c307f0472ccf688..9ad7cf4a8a5203fa8ea6331b5ddd30c81bf20901 100644 GIT binary patch delta 119078 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

itz((sp#zYP3k;x7w-+4#$0VDt5h>S%-PQqW7> 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 delta 67555 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 G%>4((<-5iJ delta 653 zcmXw#OGs2<6vxkTX72TMXL2+jje0+oNinML&fJ-~Qc#gNMN>^+v zyKq8t6++>E90)6Gbn*PXLd0DRgraCJ&hitSE>`>lWhIKMa8`2#A`2Do#5v7g*rkex zF<7dsdve~7dyX^fx0Ypj62oOG$8gY4-oy16DObD!ODYt1V6@_GZqoIfCNC~=zOvkU zw2o-n(^bY|uBRKbF%gM^BaS)KNR%z|p()a7Tx=jZGKE`_E~BTF=>1EqtZc(*jcts- zBeK`vc4e2br=I9p6058JSR?C+?uZ-`aW9#`KGVju9YtTY6a4aqX!tYhjhob~ti2XR zwqw2CLe%+O$08*qRKc78+X+l;B6^JbcDIq)NR+;WjOYq9W{CFVp-_Ain`;y&@U*54 z{fmUv=MY`{M*1HqQ?vg}+hO$A72-^7g&B)`v83l>ytbWxqP9*3QfZ Date: Mon, 22 Dec 2014 00:01:41 +0100 Subject: [PATCH 10/23] Changeset: 577 fdbozzo - 21/12/2014 17:24:33: --- VFP9_FoxBin2Prg.vbs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/VFP9_FoxBin2Prg.vbs b/VFP9_FoxBin2Prg.vbs index 27aa407..c053076 100644 --- a/VFP9_FoxBin2Prg.vbs +++ b/VFP9_FoxBin2Prg.vbs @@ -90,7 +90,7 @@ Else cCMD = "oFoxBin2prg.ejecutar( '" & WScript.Arguments(0) & "' )" Else cCMD = "oFoxBin2prg.ejecutar( '" & WScript.Arguments(0) & "','0','0','0'," _ - & cFlagDontShowErrMsg & "," & cFlagGenerateLog & ",'0','','',.F.,''," _ + & cFlagDontShowErrMsg & "," & cFlagGenerateLog & ",'1','','',.F.,''," _ & cFlagRecompile & "," & cNoTimestamps & " )" End If If cFlagJustShowCall = "1" Then From fed65fbb866593fcc18c7826a4ded9779fc0c6d3 Mon Sep 17 00:00:00 2001 From: fdbozzo Date: Tue, 23 Dec 2014 18:22:46 +0100 Subject: [PATCH 11/23] Changeset: 578 fdbozzo - 22/12/2014 00:01:42: - Arreglo del INTERACTIVE faltante y uso de ATC() en vez de $ --- foxbin2prg.prg | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/foxbin2prg.prg b/foxbin2prg.prg index 44f9b35..8f931da 100644 --- a/foxbin2prg.prg +++ b/foxbin2prg.prg @@ -1954,8 +1954,9 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM *-- EJECUCIÓN NORMAL - IF '-SHOWMSG' $ ('-' + tcType) AND NOT '-BIN2PRG' $ ('-' + tcType) AND NOT '-PRG2BIN' $ ('-' + tcType) ; - AND lcInputFile_Type == C_FILETYPE_DIRECTORY + IF ( ATC('-SHOWMSG', ('-' + tcType)) = 1 OR ATC('-INTERACTIVE', ('-' + tcType)) = 1 ) ; + AND ATC('-BIN2PRG', ('-' + tcType)) = 0 AND ATC('-PRG2BIN', ('-' + tcType)) = 0 ; + AND lcInputFile_Type == C_FILETYPE_DIRECTORY THEN *-- Se seleccionó un directorio y se puede elegir: Bin2Txt, Txt2Bin y Nada .writeLog( loLang.C_INTERACTIVE_DIRECTORY_SELECTION_LOC ) loFrm_Interactive = CREATEOBJECT('frm_interactive') @@ -2024,7 +2025,7 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM EXIT - CASE '-BIN2PRG' $ ('-' + tcType) + CASE ATC('-BIN2PRG', ('-' + tcType)) = 1 .writeLog( '> ' + loLang.C_OPTION_LOC + ': BIN2PRG' ) DO CASE @@ -2077,7 +2078,7 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM ENDCASE - CASE '-PRG2BIN' $ ('-' + tcType) + CASE ATC('-PRG2BIN', ('-' + tcType)) = 1 .writeLog( '> ' + loLang.C_OPTION_LOC + ': PRG2BIN' ) DO CASE @@ -2300,7 +2301,7 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM loLang = CREATEOBJECT("CL_LANG","EN") ENDIF - IF '-SHOWMSG' $ ('-' + tcType) OR '-INTERACTIVE' $ ('-' + tcType) THEN + IF ATC('-SHOWMSG', ('-' + tcType)) = 1 OR ATC('-INTERACTIVE', ('-' + tcType)) = 1 THEN toEx.UserValue = toEx.UserValue + 'tc_InputDir = [' + TRANSFORM(tc_InputFile) + ']' + CR_LF THIS.l_ShowErrors = .F. && La opción "SHOWMSG" muestra su propio mensaje ENDIF @@ -2336,7 +2337,7 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM CD (JUSTPATH(THIS.c_CurDir)) DO CASE - CASE '-SHOWMSG' $ ('-' + tcType) OR '-INTERACTIVE' $ ('-' + tcType) + CASE ATC('-SHOWMSG', ('-' + tcType)) = 1 OR ATC('-INTERACTIVE', ('-' + tcType)) = 1 DO CASE CASE lnCodError = 1799 && Conversion Cancelled From 4d701a7eefc68700acecf7df3e060856a90482b6 Mon Sep 17 00:00:00 2001 From: fdbozzo Date: Tue, 23 Dec 2014 20:10:44 +0100 Subject: [PATCH 12/23] Changeset: 579 fdbozzo - 23/12/2014 18:22:46: - INTERACTIVE ya no muestra el mensaje de estado final, solo SHOWMSG, para que el script pueda aprovechar la nueva funcionalidad y seguir mostrando el mensaje --- VFP9_FoxBin2Prg.vbs | 2 +- foxbin2prg.prg | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/VFP9_FoxBin2Prg.vbs b/VFP9_FoxBin2Prg.vbs index c053076..8dd760f 100644 --- a/VFP9_FoxBin2Prg.vbs +++ b/VFP9_FoxBin2Prg.vbs @@ -89,7 +89,7 @@ Else If nDebug = 0 Or nDebug = 2 Then cCMD = "oFoxBin2prg.ejecutar( '" & WScript.Arguments(0) & "' )" Else - cCMD = "oFoxBin2prg.ejecutar( '" & WScript.Arguments(0) & "','0','0','0'," _ + cCMD = "oFoxBin2prg.ejecutar( '" & WScript.Arguments(0) & "','INTERACTIVE','0','0'," _ & cFlagDontShowErrMsg & "," & cFlagGenerateLog & ",'1','','',.F.,''," _ & cFlagRecompile & "," & cNoTimestamps & " )" End If diff --git a/foxbin2prg.prg b/foxbin2prg.prg index 8f931da..4a120a6 100644 --- a/foxbin2prg.prg +++ b/foxbin2prg.prg @@ -2337,7 +2337,7 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM CD (JUSTPATH(THIS.c_CurDir)) DO CASE - CASE ATC('-SHOWMSG', ('-' + tcType)) = 1 OR ATC('-INTERACTIVE', ('-' + tcType)) = 1 + CASE ATC('-SHOWMSG', ('-' + tcType)) = 1 &&OR ATC('-INTERACTIVE', ('-' + tcType)) = 1 DO CASE CASE lnCodError = 1799 && Conversion Cancelled From 290965f8485e772f6457a7482fa0935c1350aa17 Mon Sep 17 00:00:00 2001 From: fdbozzo Date: Tue, 23 Dec 2014 23:46:48 +0100 Subject: [PATCH 13/23] =?UTF-8?q?Changeset:=20580=20fdbozzo=20-=2023/12/20?= =?UTF-8?q?14=2020:10:45:=20-=20Definici=C3=B3n=20final=20y=20arreglo=20de?= =?UTF-8?q?=20INTERACTIVE=20y=20SHOWMSG?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- foxbin2prg.prg | 24 ++++++++++++++++++------ 1 file changed, 18 insertions(+), 6 deletions(-) diff --git a/foxbin2prg.prg b/foxbin2prg.prg index 4a120a6..84b8e35 100644 --- a/foxbin2prg.prg +++ b/foxbin2prg.prg @@ -120,6 +120,11 @@ * 04/12/2014 FDBOZZO v1.19.38 Mejora: Permitir hacer conversiones masivas bin2prg y prg2bin sin los scripts vbs (Francisco Prieto) * 06/12/2014 FDBOZZO v1.19.38 Mejora: Rediseño de la Internacionalización. Ahora la selección es automática al cargar y no requiere recompilar. * 12/12/2014 FDBOZZO v1.19.38 Mejora: Detección de métodos duplicados para notificar casos de corrupción (Álvaro Castrillón) +* 18/12/2014 FDBOZZO v1.19.39 Mejora: Cuando se usan las claves BIN2PRG o PRG2BIN permitir procesar un archivo solo (Mike Potjer) +* 18/12/2014 FDBOZZO v1.19.39 Mejora: Agregar la clave SHOWMSG y dejar INTERACTIVE para un diálogo interactivo (Mike Potjer) +* 18/12/2014 FDBOZZO v1.19.39 Mejora: Cuando se procesa un directorio con foxbin2prg.exe solo y la clave INTERACTIVE, mostrar un diálogo para preguntar qué procesar (Mike Potjer) +* 18/12/2014 FDBOZZO v1.19.39 Bug fix vbs: Los scripts vbs no muestren los errores del proceso de FoxBin2Prg +* * * *--------------------------------------------------------------------------------------------------- @@ -173,6 +178,9 @@ * 21/10/2014 Ryan Harris MEJORA v1.19.36: Permitir generar una clase por archivo (sugerencia) * 04/12/2014 Francisco Prieto MEJORA v1.19.36: Permitir hacer conversiones masivas bin2prg y prg2bin sin los scripts vbs * 12/12/2014 Álvaro Castrillón MEJORA v1.19.36: Detección de métodos duplicados para notificar casos de corrupción +* 16/12/2014 Mike Potjer Mejora v1.19.38: Cuando se usan las claves BIN2PRG o PRG2BIN permitir procesar un archivo solo +* 16/12/2014 Mike Potjer Mejora v1.19.38: Agregar la clave SHOWMSG y dejar INTERACTIVE para un diálogo interactivo +* 16/12/2014 Mike Potjer Mejora v1.19.38: Cuando se procesa un directorio con foxbin2prg.exe solo y la clave INTERACTIVE, mostrar un diálogo para preguntar qué procesar * * *--------------------------------------------------------------------------------------------------- @@ -407,7 +415,11 @@ 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', 'BIN2PRG-SHOWMSG', 'PRG2BIN-SHOWMSG', 'SHOWMSG', 'INTERACTIVE') THEN +tc_InputFile = EVL(tc_InputFile,'') +tcType = EVL(tcType,'') + +IF ATC('-BIN2PRG','-'+tc_InputFile) >= 1 OR ATC('-PRG2BIN','-'+tc_InputFile) >= 1 ; + OR ATC('-SHOWMSG','-'+tc_InputFile) >= 1 OR ATC('-INTERACTIVE','-'+tc_InputFile) >= 1 THEN pcParamX = tc_InputFile tc_InputFile = tcType tcType = pcParamX @@ -1954,7 +1966,7 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM *-- EJECUCIÓN NORMAL - IF ( ATC('-SHOWMSG', ('-' + tcType)) = 1 OR ATC('-INTERACTIVE', ('-' + tcType)) = 1 ) ; + IF ATC('-INTERACTIVE', ('-' + tcType)) >= 1 ; AND ATC('-BIN2PRG', ('-' + tcType)) = 0 AND ATC('-PRG2BIN', ('-' + tcType)) = 0 ; AND lcInputFile_Type == C_FILETYPE_DIRECTORY THEN *-- Se seleccionó un directorio y se puede elegir: Bin2Txt, Txt2Bin y Nada @@ -2025,7 +2037,7 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM EXIT - CASE ATC('-BIN2PRG', ('-' + tcType)) = 1 + CASE ATC('-BIN2PRG', ('-' + tcType)) >= 1 .writeLog( '> ' + loLang.C_OPTION_LOC + ': BIN2PRG' ) DO CASE @@ -2078,7 +2090,7 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM ENDCASE - CASE ATC('-PRG2BIN', ('-' + tcType)) = 1 + CASE ATC('-PRG2BIN', ('-' + tcType)) >= 1 .writeLog( '> ' + loLang.C_OPTION_LOC + ': PRG2BIN' ) DO CASE @@ -2301,7 +2313,7 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM loLang = CREATEOBJECT("CL_LANG","EN") ENDIF - IF ATC('-SHOWMSG', ('-' + tcType)) = 1 OR ATC('-INTERACTIVE', ('-' + tcType)) = 1 THEN + IF ATC('-SHOWMSG', ('-' + tcType)) >= 1 THEN toEx.UserValue = toEx.UserValue + 'tc_InputDir = [' + TRANSFORM(tc_InputFile) + ']' + CR_LF THIS.l_ShowErrors = .F. && La opción "SHOWMSG" muestra su propio mensaje ENDIF @@ -2337,7 +2349,7 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM CD (JUSTPATH(THIS.c_CurDir)) DO CASE - CASE ATC('-SHOWMSG', ('-' + tcType)) = 1 &&OR ATC('-INTERACTIVE', ('-' + tcType)) = 1 + CASE ATC('-SHOWMSG', ('-' + tcType)) >= 1 DO CASE CASE lnCodError = 1799 && Conversion Cancelled From 2cee2819d4c37f1c647799efb716a3b3c0d7cb03 Mon Sep 17 00:00:00 2001 From: fdbozzo Date: Wed, 31 Dec 2014 01:37:31 +0100 Subject: [PATCH 14/23] =?UTF-8?q?Changeset:=20581=20fdbozzo=20-=2023/12/20?= =?UTF-8?q?14=2023:46:48:=20-=20Bug=20fix=20dc2:=20Los=20datos=20de=20Disp?= =?UTF-8?q?layClass=20y=20DisplayClassLibrary=20ten=C3=ADan=20el=20valor?= =?UTF-8?q?=20de=20"Default"=20en=20vez=20del=20propio=20(Christopher=20Ku?= =?UTF-8?q?rth/Ryan=20Harris)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- TESTS/DATOS_READONLY/FB2P_DBC.DC2 | 18 +++++++++--------- TESTS/DATOS_READONLY/fb2p_dbc.dbc | Bin 8968 -> 8968 bytes TESTS/DATOS_READONLY/fb2p_dbc.dct | Bin 138240 -> 147328 bytes foxbin2prg.prg | 6 ++++-- 4 files changed, 13 insertions(+), 11 deletions(-) diff --git a/TESTS/DATOS_READONLY/FB2P_DBC.DC2 b/TESTS/DATOS_READONLY/FB2P_DBC.DC2 index 4957365..06eda8c 100644 --- a/TESTS/DATOS_READONLY/FB2P_DBC.DC2 +++ b/TESTS/DATOS_READONLY/FB2P_DBC.DC2 @@ -609,17 +609,17 @@ dummy - - + Dummy + Dummy_field_comment C(1) - - - - - + Depto. + cl_optiongroup + fb2p_test.vcx + ! + XXXXXXXXXX .F. - - + dummy_field_validation_rule() + dummy_field_validation_message .T. DUAL.DUMMY diff --git a/TESTS/DATOS_READONLY/fb2p_dbc.dbc b/TESTS/DATOS_READONLY/fb2p_dbc.dbc index e663ef900069390afe5579c6b750060653857050..39fe57a02a013aa2ca1f01903a9c2fcf50105719 100644 GIT binary patch delta 43 zcmV+`0M!48Mu|%G0__O1{0^840{RG(mKvi1(g>3~8>0gC2(#cDC|%G0>1&X{0^840?z=GmKvi1wE>em8>0fp0JGp5CMaGGu zT43HWAnzDZuPKyNSXnxLWxRY~qq$vD3rh0! zCJKszHI?Akq>iGAffsCqg-dB}ZY7Wj1|S!9;Wxzqk11k6?TifU@oAZQ=F}+G$&O<6Bf!}2hb^!5T`JxfnCRy z0!p)xv@rSOX<;6qCG$ZTeiNHK|1*hz36C<#GIbiuF2eeog NoS<(53(DI-4gfdVO#A=< delta 35 rcmZqp&(W}hgM)#Aqkw^d!C|A|C&q~ioXyNk?aWM!+nJe|{z?J>tQH91 diff --git a/foxbin2prg.prg b/foxbin2prg.prg index 84b8e35..551c919 100644 --- a/foxbin2prg.prg +++ b/foxbin2prg.prg @@ -124,6 +124,7 @@ * 18/12/2014 FDBOZZO v1.19.39 Mejora: Agregar la clave SHOWMSG y dejar INTERACTIVE para un diálogo interactivo (Mike Potjer) * 18/12/2014 FDBOZZO v1.19.39 Mejora: Cuando se procesa un directorio con foxbin2prg.exe solo y la clave INTERACTIVE, mostrar un diálogo para preguntar qué procesar (Mike Potjer) * 18/12/2014 FDBOZZO v1.19.39 Bug fix vbs: Los scripts vbs no muestren los errores del proceso de FoxBin2Prg +* 30/12/2014 FDBOZZO v1.19.39 Bug fix dc2: Los datos de DisplayClass y DisplayClassLibrary tenían el valor de "Default" en vez del propio (Ryan Harris) * * * @@ -181,6 +182,7 @@ * 16/12/2014 Mike Potjer Mejora v1.19.38: Cuando se usan las claves BIN2PRG o PRG2BIN permitir procesar un archivo solo * 16/12/2014 Mike Potjer Mejora v1.19.38: Agregar la clave SHOWMSG y dejar INTERACTIVE para un diálogo interactivo * 16/12/2014 Mike Potjer Mejora v1.19.38: Cuando se procesa un directorio con foxbin2prg.exe solo y la clave INTERACTIVE, mostrar un diálogo para preguntar qué procesar +* 30/12/2014 Ryan Harris Bug Fix v1.19.38: Los datos de DisplayClass y DisplayClassLibrary tenían el valor de "Default" en vez del propio * * *--------------------------------------------------------------------------------------------------- @@ -17609,8 +17611,8 @@ DEFINE CLASS CL_DBC_FIELD_VW AS CL_DBC_BASE <<>> <> <<>> <> <<>> <> - <<>> <> - <<>> <> + <<>> <> + <<>> <> <<>> <> <<>> <> <<>> <> From 8365719d1ef42d271240ffafce731e80441994a3 Mon Sep 17 00:00:00 2001 From: fdbozzo Date: Thu, 1 Jan 2015 19:17:02 +0100 Subject: [PATCH 15/23] =?UTF-8?q?Changeset:=20582=20fdbozzo=20-=2031/12/20?= =?UTF-8?q?14=2001:37:32:=20-=20Actualizaci=C3=B3n=20de=20cr=C3=A9ditos=20?= =?UTF-8?q?y=20agradecimientos?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- foxbin2prg.prg | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/foxbin2prg.prg b/foxbin2prg.prg index 551c919..61862d3 100644 --- a/foxbin2prg.prg +++ b/foxbin2prg.prg @@ -124,7 +124,7 @@ * 18/12/2014 FDBOZZO v1.19.39 Mejora: Agregar la clave SHOWMSG y dejar INTERACTIVE para un diálogo interactivo (Mike Potjer) * 18/12/2014 FDBOZZO v1.19.39 Mejora: Cuando se procesa un directorio con foxbin2prg.exe solo y la clave INTERACTIVE, mostrar un diálogo para preguntar qué procesar (Mike Potjer) * 18/12/2014 FDBOZZO v1.19.39 Bug fix vbs: Los scripts vbs no muestren los errores del proceso de FoxBin2Prg -* 30/12/2014 FDBOZZO v1.19.39 Bug fix dc2: Los datos de DisplayClass y DisplayClassLibrary tenían el valor de "Default" en vez del propio (Ryan Harris) +* 30/12/2014 FDBOZZO v1.19.39 Bug fix dc2: Los datos de DisplayClass y DisplayClassLibrary tenían el valor de "Default" en vez del propio (Christopher Kurth/Ryan Harris) * * * @@ -182,7 +182,7 @@ * 16/12/2014 Mike Potjer Mejora v1.19.38: Cuando se usan las claves BIN2PRG o PRG2BIN permitir procesar un archivo solo * 16/12/2014 Mike Potjer Mejora v1.19.38: Agregar la clave SHOWMSG y dejar INTERACTIVE para un diálogo interactivo * 16/12/2014 Mike Potjer Mejora v1.19.38: Cuando se procesa un directorio con foxbin2prg.exe solo y la clave INTERACTIVE, mostrar un diálogo para preguntar qué procesar -* 30/12/2014 Ryan Harris Bug Fix v1.19.38: Los datos de DisplayClass y DisplayClassLibrary tenían el valor de "Default" en vez del propio +* 30/12/2014 Ryan Harris Reporte bug dbc v1.19.38: Los datos de DisplayClass y DisplayClassLibrary tenían el valor de "Default" en vez del propio * * *--------------------------------------------------------------------------------------------------- From 2f9208474bf1fe79eca2794a9baebb446c46f28a Mon Sep 17 00:00:00 2001 From: fdbozzo Date: Thu, 1 Jan 2015 19:29:36 +0100 Subject: [PATCH 16/23] Changeset: 583 fdbozzo - 01/01/2015 19:17:03: - Mostrar los mensajes de error siempre maximizados, para evitar que queden ocultos --- Convert_VFP9_BIN_2_PRG.vbs | 4 ++-- Convert_VFP9_PRG_2_BIN.vbs | 4 ++-- VFP9_FoxBin2Prg.vbs | 4 ++-- foxbin2prg.prg | 4 ++-- 4 files changed, 8 insertions(+), 8 deletions(-) diff --git a/Convert_VFP9_BIN_2_PRG.vbs b/Convert_VFP9_BIN_2_PRG.vbs index 20dd635..75b9077 100644 --- a/Convert_VFP9_BIN_2_PRG.vbs +++ b/Convert_VFP9_BIN_2_PRG.vbs @@ -119,13 +119,13 @@ Else MsgBox cConvCancelByUserMsg & "! [p:" & nProcessedFilesCount & "]", 48+4096, WScript.ScriptName & " (" & oVFP9.Eval("oFoxBin2prg.c_FB2PRG_EXE_Version") & ")" oVFP9.DoCmd("oFoxBin2prg.writeErrorLog_Flush()") cErrFile = oVFP9.Eval("oFoxBin2prg.c_ErrorLogFile") - WSHShell.run cErrFile + WSHShell.run cErrFile,3 ElseIf oVFP9.Eval("oFoxBin2prg.l_Error") Then MsgBox cEndOfProcessMsg & "! (" & cWithErrorsMsg & ") [p:" & nProcessedFilesCount & "]", 48+4096, WScript.ScriptName & " (" & oVFP9.Eval("oFoxBin2prg.c_FB2PRG_EXE_Version") & ")" oVFP9.DoCmd("oFoxBin2prg.writeErrorLog_Flush()") cErrFile = oVFP9.Eval("oFoxBin2prg.c_ErrorLogFile") - WSHShell.run cErrFile + WSHShell.run cErrFile,3 Else MsgBox cEndOfProcessMsg & "! [p:" & nProcessedFilesCount & "]", 64+4096, WScript.ScriptName & " (" & oVFP9.Eval("oFoxBin2prg.c_FB2PRG_EXE_Version") & ")" End If diff --git a/Convert_VFP9_PRG_2_BIN.vbs b/Convert_VFP9_PRG_2_BIN.vbs index df387a8..58f5ade 100644 --- a/Convert_VFP9_PRG_2_BIN.vbs +++ b/Convert_VFP9_PRG_2_BIN.vbs @@ -125,13 +125,13 @@ Else MsgBox cConvCancelByUserMsg & "! [p:" & nProcessedFilesCount & "]", 48+4096, WScript.ScriptName & " (" & oVFP9.Eval("oFoxBin2prg.c_FB2PRG_EXE_Version") & ")" oVFP9.DoCmd("oFoxBin2prg.writeErrorLog_Flush()") cErrFile = oVFP9.Eval("oFoxBin2prg.c_ErrorLogFile") - WSHShell.run cErrFile + WSHShell.run cErrFile,3 ElseIf oVFP9.Eval("oFoxBin2prg.l_Error") Then MsgBox cEndOfProcessMsg & "! (" & cWithErrorsMsg & ") [p:" & nProcessedFilesCount & "]", 48+4096, WScript.ScriptName & " (" & oVFP9.Eval("oFoxBin2prg.c_FB2PRG_EXE_Version") & ")" oVFP9.DoCmd("oFoxBin2prg.writeErrorLog_Flush()") cErrFile = oVFP9.Eval("oFoxBin2prg.c_ErrorLogFile") - WSHShell.run cErrFile + WSHShell.run cErrFile,3 Else MsgBox cEndOfProcessMsg & "! [p:" & nProcessedFilesCount & "]", 64+4096, WScript.ScriptName & " (" & oVFP9.Eval("oFoxBin2prg.c_FB2PRG_EXE_Version") & ")" End If diff --git a/VFP9_FoxBin2Prg.vbs b/VFP9_FoxBin2Prg.vbs index 8dd760f..bfb05b3 100644 --- a/VFP9_FoxBin2Prg.vbs +++ b/VFP9_FoxBin2Prg.vbs @@ -110,13 +110,13 @@ Else MsgBox cConvCancelByUserMsg & "! [p:" & nProcessedFilesCount & "]", 48+4096, WScript.ScriptName & " (" & oVFP9.Eval("oFoxBin2prg.c_FB2PRG_EXE_Version") & ")" oVFP9.DoCmd("oFoxBin2prg.writeErrorLog_Flush()") cErrFile = oVFP9.Eval("oFoxBin2prg.c_ErrorLogFile") - WSHShell.run cErrFile + WSHShell.run cErrFile,3 ElseIf oVFP9.Eval("oFoxBin2prg.l_Error") Then MsgBox cEndOfProcessMsg & "! (" & cWithErrorsMsg & ") [p:" & nProcessedFilesCount & "]", 48+4096, WScript.ScriptName & " (" & oVFP9.Eval("oFoxBin2prg.c_FB2PRG_EXE_Version") & ")" oVFP9.DoCmd("oFoxBin2prg.writeErrorLog_Flush()") cErrFile = oVFP9.Eval("oFoxBin2prg.c_ErrorLogFile") - WSHShell.run cErrFile + WSHShell.run cErrFile,3 Else MsgBox cEndOfProcessMsg & "! [p:" & nProcessedFilesCount & "]", 64+4096, WScript.ScriptName & " (" & oVFP9.Eval("oFoxBin2prg.c_FB2PRG_EXE_Version") & ")" End If diff --git a/foxbin2prg.prg b/foxbin2prg.prg index 61862d3..9dd3df0 100644 --- a/foxbin2prg.prg +++ b/foxbin2prg.prg @@ -2357,12 +2357,12 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM CASE lnCodError = 1799 && Conversion Cancelled MESSAGEBOX( loLang.C_CONVERSION_CANCELLED_BY_USER_LOC + '! [p:' + TRANSFORM( THIS.n_ProcessedFilesCount ) + ']', 0+48+4096, 'FoxBin2Prg', 60000 ) THIS.writeErrorLog_Flush( ) - loWSH.Run( THIS.c_ErrorLogFile, 1, .F. ) + loWSH.Run( THIS.c_ErrorLogFile, 3 ) CASE THIS.l_Error MESSAGEBOX( loLang.C_END_OF_PROCESS_LOC + '! (' + loLang.C_WITH_ERRORS_LOC + ') [p:' + TRANSFORM( THIS.n_ProcessedFilesCount ) + ']', 0+48+4096, 'FoxBin2Prg', 60000 ) THIS.writeErrorLog_Flush( ) - loWSH.Run( THIS.c_ErrorLogFile, 1, .F. ) + loWSH.Run( THIS.c_ErrorLogFile, 3 ) OTHERWISE MESSAGEBOX( loLang.C_END_OF_PROCESS_LOC + ' [p:' + TRANSFORM( THIS.n_ProcessedFilesCount ) + ']', 0+64+4096, 'FoxBin2Prg', 60000 ) From bd104c7ed24fca4243f9726c33c96e188a294e2d Mon Sep 17 00:00:00 2001 From: fdbozzo Date: Thu, 1 Jan 2015 19:30:45 +0100 Subject: [PATCH 17/23] Changeset: 584 fdbozzo - 01/01/2015 19:29:36: - Limpieza foxbin2prg.cfg --- foxbin2prg.cfg | 2 -- 1 file changed, 2 deletions(-) diff --git a/foxbin2prg.cfg b/foxbin2prg.cfg index aa1c3ff..813537d 100644 --- a/foxbin2prg.cfg +++ b/foxbin2prg.cfg @@ -63,5 +63,3 @@ *extension: mn2=mna *extension: db2=dba *extension: dc2=dca - - From 85985f58bcd91dc75017b2550f27ad599498b30d Mon Sep 17 00:00:00 2001 From: fdbozzo Date: Thu, 1 Jan 2015 20:04:52 +0100 Subject: [PATCH 18/23] Changeset: 585 fdbozzo - 01/01/2015 19:30:45: - Mejoras en info de LOG --- foxbin2prg.prg | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/foxbin2prg.prg b/foxbin2prg.prg index 9dd3df0..e42e802 100644 --- a/foxbin2prg.prg +++ b/foxbin2prg.prg @@ -686,9 +686,9 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM ADDPROPERTY(_SCREEN, 'ExitCode', 0) THIS.writeLog( REPLICATE( '*', 100 ) ) - THIS.writeLog( 'FoxBin2Prg ' + THIS.c_FB2PRG_EXE_Version + ' INIT' ) + THIS.writeLog( 'FoxBin2Prg INIT' ) THIS.writeLog( REPLICATE( '*', 100 ) ) - THIS.writeLog( 'Executing: ' + THIS.c_Foxbin2prg_FullPath + ' (EXE Version: ' + THIS.c_FB2PRG_EXE_Version + ')' ) + THIS.writeLog( 'FoxBin2Prg: [' + THIS.c_Foxbin2prg_FullPath + '] (EXE Version: ' + THIS.c_FB2PRG_EXE_Version + ')' ) THIS.ChangeLanguage() THIS.o_FSO = CREATEOBJECT("Scripting.FileSystemObject") @@ -2314,13 +2314,15 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM IF VARTYPE(loLang) <> 'O' THEN loLang = CREATEOBJECT("CL_LANG","EN") ENDIF + + toEx.UserValue = toEx.UserValue + 'FoxBin2Prg: [' + THIS.c_Foxbin2prg_FullPath + '] (EXE Version: ' + THIS.c_FB2PRG_EXE_Version + ')' + CR_LF IF ATC('-SHOWMSG', ('-' + tcType)) >= 1 THEN - toEx.UserValue = toEx.UserValue + 'tc_InputDir = [' + TRANSFORM(tc_InputFile) + ']' + CR_LF + toEx.UserValue = toEx.UserValue + 'lcInputFile_Type = [' + TRANSFORM(lcInputFile_Type) + ']' + CR_LF THIS.l_ShowErrors = .F. && La opción "SHOWMSG" muestra su propio mensaje ENDIF - toEx.USERVALUE = toEx.USERVALUE + 'tc_InputFile = ' + TRANSFORM(tc_InputFile) + CR_LF + toEx.USERVALUE = toEx.USERVALUE + 'tc_InputFile = [' + TRANSFORM(tc_InputFile) + ']' + CR_LF THIS.ejecutar_WriteErrorLog( @toEx, @lcErrorInfo ) From 9313374745bea1b832d720bc0367a6254297f2bc Mon Sep 17 00:00:00 2001 From: fdbozzo Date: Thu, 1 Jan 2015 20:22:33 +0100 Subject: [PATCH 19/23] Changeset: 586 fdbozzo - 01/01/2015 20:04:52: --- foxbin2prg.prg | 1 - 1 file changed, 1 deletion(-) diff --git a/foxbin2prg.prg b/foxbin2prg.prg index e42e802..342095b 100644 --- a/foxbin2prg.prg +++ b/foxbin2prg.prg @@ -125,7 +125,6 @@ * 18/12/2014 FDBOZZO v1.19.39 Mejora: Cuando se procesa un directorio con foxbin2prg.exe solo y la clave INTERACTIVE, mostrar un diálogo para preguntar qué procesar (Mike Potjer) * 18/12/2014 FDBOZZO v1.19.39 Bug fix vbs: Los scripts vbs no muestren los errores del proceso de FoxBin2Prg * 30/12/2014 FDBOZZO v1.19.39 Bug fix dc2: Los datos de DisplayClass y DisplayClassLibrary tenían el valor de "Default" en vez del propio (Christopher Kurth/Ryan Harris) -* * * *--------------------------------------------------------------------------------------------------- From 43c5464d6c7adf8bf46dfd5639d237f5905305dc Mon Sep 17 00:00:00 2001 From: fdbozzo Date: Thu, 1 Jan 2015 20:23:19 +0100 Subject: [PATCH 20/23] =?UTF-8?q?Changeset:=20587=20fdbozzo=20-=2001/01/20?= =?UTF-8?q?15=2020:22:33:=20-=20Generaci=C3=B3n=20del=20EXE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- foxbin2prg.exe | Bin 500655 -> 509708 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/foxbin2prg.exe b/foxbin2prg.exe index 8738b1282fcfeddacdce703b92674b0fb6ee9729..00e4b7dc2efb41810b5f77e0dc3300fe54db11bd 100644 GIT binary patch delta 43685 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≪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≪E#3|6KMCUj{0HxH`9rlM&2L1jZ=duY4j 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 MZI;O&)W_8S0BV^dPyhe` delta 34909 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 From 39b3ff31ec3bf16bccb47649c4772c94c86d0251 Mon Sep 17 00:00:00 2001 From: fdbozzo Date: Thu, 1 Jan 2015 20:52:43 +0100 Subject: [PATCH 21/23] Changeset: 589 fdbozzo - 01/01/2015 20:40:50: - Arreglo de algunos tests --- .../ft__foxbin2prg__c_conversor_prg_a_dbf.prg | 12 ++--- .../ft__foxbin2prg__c_conversor_prg_a_mnx.prg | 50 +++++++++---------- foxbin2prg.prg | 4 ++ 3 files changed, 35 insertions(+), 31 deletions(-) diff --git a/TESTS/ft__foxbin2prg__c_conversor_prg_a_dbf.prg b/TESTS/ft__foxbin2prg__c_conversor_prg_a_dbf.prg index 2bdc3b1..c7a48a5 100644 --- a/TESTS/ft__foxbin2prg__c_conversor_prg_a_dbf.prg +++ b/TESTS/ft__foxbin2prg__c_conversor_prg_a_dbf.prg @@ -113,7 +113,7 @@ DEFINE CLASS ft__foxbin2prg__c_conversor_prg_a_dbf AS FxuTestCase OF FxuTestCase oFXU_LIB.copiarArchivosParaTest( lc_File ) - loCnv.Ejecutar( lc_File, '', '', '', '1', '0', '1',.F.,.F.,.T. ) + loCnv.Ejecutar( lc_OutputFile, '', '', '', '1', '0', '1',.F.,.F.,.T. ) SELECT 0 USE (FORCEEXT(lc_InputFile,'DBF')) SHARED AGAIN NOUPDATE ALIAS ARCHIVOBIN_IN @@ -185,7 +185,7 @@ DEFINE CLASS ft__foxbin2prg__c_conversor_prg_a_dbf AS FxuTestCase OF FxuTestCase oFXU_LIB.copiarArchivosParaTest( lc_File ) - loCnv.Ejecutar( lc_File, '', '', '', '1', '0', '1',.F.,.F.,.T. ) + loCnv.Ejecutar( lc_OutputFile, '', '', '', '1', '0', '1',.F.,.F.,.T. ) SELECT 0 USE (FORCEEXT(lc_InputFile,'DBF')) SHARED AGAIN NOUPDATE ALIAS ARCHIVOBIN_IN @@ -258,8 +258,8 @@ DEFINE CLASS ft__foxbin2prg__c_conversor_prg_a_dbf AS FxuTestCase OF FxuTestCase oFXU_LIB.copiarArchivosParaTest( FORCEEXT(lc_File,'*') ) - loCnv.Ejecutar( FORCEEXT(lc_File,'DBF'), '', '', '', '1', '0', '1',.F.,.F.,.T. ) - loCnv.Ejecutar( FORCEEXT(lc_File,'DB2'), '', '', '', '1', '0', '1',.F.,.F.,.T. ) + loCnv.Ejecutar( FORCEEXT(lc_OutputFile,'DBF'), '', '', '', '1', '0', '1',.F.,.F.,.T. ) + loCnv.Ejecutar( FORCEEXT(lc_OutputFile,'DB2'), '', '', '', '1', '0', '1',.F.,.F.,.T. ) SELECT 0 USE (FORCEEXT(lc_InputFile,'DBF')) SHARED AGAIN NOUPDATE ALIAS ARCHIVOBIN_IN @@ -331,8 +331,8 @@ DEFINE CLASS ft__foxbin2prg__c_conversor_prg_a_dbf AS FxuTestCase OF FxuTestCase oFXU_LIB.copiarArchivosParaTest( FORCEEXT(lc_File,'*') ) - loCnv.Ejecutar( FORCEEXT(lc_File,'DBF'), '', '', '', '1', '0', '1',.F.,.F.,.T. ) - loCnv.Ejecutar( FORCEEXT(lc_File,'DB2'), '', '', '', '1', '0', '1',.F.,.F.,.T. ) + loCnv.Ejecutar( FORCEEXT(lc_OutputFile,'DBF'), '', '', '', '1', '0', '1',.F.,.F.,.T. ) + loCnv.Ejecutar( FORCEEXT(lc_OutputFile,'DB2'), '', '', '', '1', '0', '1',.F.,.F.,.T. ) SELECT 0 USE (FORCEEXT(lc_InputFile,'DBF')) SHARED AGAIN NOUPDATE ALIAS ARCHIVOBIN_IN diff --git a/TESTS/ft__foxbin2prg__c_conversor_prg_a_mnx.prg b/TESTS/ft__foxbin2prg__c_conversor_prg_a_mnx.prg index 209ff67..6fb2ccd 100644 --- a/TESTS/ft__foxbin2prg__c_conversor_prg_a_mnx.prg +++ b/TESTS/ft__foxbin2prg__c_conversor_prg_a_mnx.prg @@ -111,17 +111,17 @@ DEFINE CLASS ft__foxbin2prg__c_conversor_prg_a_mnx AS FxuTestCase OF FxuTestCase oFXU_LIB.copiarArchivosParaTest( FORCEEXT(lc_File,'*') ) *-- Genero el DC2 - loCnv.Ejecutar( FORCEEXT(lc_File,'MNX'), '', '', '', '1', '0', '1',.F.,.F.,.T. ) + loCnv.Ejecutar( FORCEEXT(lc_OutputFile,'MNX'), '', '', '', '1', '0', '1',.F.,.F.,.T. ) *-- Regenero el DBC - loCnv.Ejecutar( FORCEEXT(lc_File,'MN2'), '', '', '', '1', '0', '1',.F.,.F.,.T. ) + loCnv.Ejecutar( FORCEEXT(lc_OutputFile,'MN2'), '', '', '', '1', '0', '1',.F.,.F.,.T. ) *-- Renombro el DC2 a DC3 (ORIGINAL) RENAME (FORCEEXT(lc_OutputFile,'MN2')) TO (FORCEEXT(lc_OutputFile,'MN3')) *-- Genero el DC2 desde el DBC regenerado - loCnv.Ejecutar( FORCEEXT(lc_File,'MNX'), '', '', '', '1', '0', '1',.F.,.F.,.T. ) + loCnv.Ejecutar( FORCEEXT(lc_OutputFile,'MNX'), '', '', '', '1', '0', '1',.F.,.F.,.T. ) *-- Comparo los MN2 y MN3 lnLenHeader = LEN( loCnv.get_PROGRAM_HEADER() ) - lcMN2 = SUBSTR( FILETOSTR( FORCEEXT(lc_File,'MN2') ), lnLenHeader ) - lcMN3 = SUBSTR( FILETOSTR( FORCEEXT(lc_File,'MN3') ), lnLenHeader ) + lcMN2 = SUBSTR( FILETOSTR( FORCEEXT(lc_OutputFile,'MN2') ), lnLenHeader ) + lcMN3 = SUBSTR( FILETOSTR( FORCEEXT(lc_OutputFile,'MN3') ), lnLenHeader ) *-- Visualización de valores @@ -171,17 +171,17 @@ DEFINE CLASS ft__foxbin2prg__c_conversor_prg_a_mnx AS FxuTestCase OF FxuTestCase oFXU_LIB.copiarArchivosParaTest( FORCEEXT(lc_File,'*') ) *-- Genero el DC2 - loCnv.Ejecutar( FORCEEXT(lc_File,'MNX'), '', '', '', '1', '0', '1',.F.,.F.,.T. ) + loCnv.Ejecutar( FORCEEXT(lc_OutputFile,'MNX'), '', '', '', '1', '0', '1',.F.,.F.,.T. ) *-- Regenero el DBC - loCnv.Ejecutar( FORCEEXT(lc_File,'MN2'), '', '', '', '1', '0', '1',.F.,.F.,.T. ) + loCnv.Ejecutar( FORCEEXT(lc_OutputFile,'MN2'), '', '', '', '1', '0', '1',.F.,.F.,.T. ) *-- Renombro el DC2 a DC3 (ORIGINAL) RENAME (FORCEEXT(lc_OutputFile,'MN2')) TO (FORCEEXT(lc_OutputFile,'MN3')) *-- Genero el DC2 desde el DBC regenerado - loCnv.Ejecutar( FORCEEXT(lc_File,'MNX'), '', '', '', '1', '0', '1',.F.,.F.,.T. ) + loCnv.Ejecutar( FORCEEXT(lc_OutputFile,'MNX'), '', '', '', '1', '0', '1',.F.,.F.,.T. ) *-- Comparo los MN2 y MN3 lnLenHeader = LEN( loCnv.get_PROGRAM_HEADER() ) - lcMN2 = SUBSTR( FILETOSTR( FORCEEXT(lc_File,'MN2') ), lnLenHeader ) - lcMN3 = SUBSTR( FILETOSTR( FORCEEXT(lc_File,'MN3') ), lnLenHeader ) + lcMN2 = SUBSTR( FILETOSTR( FORCEEXT(lc_OutputFile,'MN2') ), lnLenHeader ) + lcMN3 = SUBSTR( FILETOSTR( FORCEEXT(lc_OutputFile,'MN3') ), lnLenHeader ) *-- Visualización de valores @@ -231,17 +231,17 @@ DEFINE CLASS ft__foxbin2prg__c_conversor_prg_a_mnx AS FxuTestCase OF FxuTestCase oFXU_LIB.copiarArchivosParaTest( FORCEEXT(lc_File,'*') ) *-- Genero el DC2 - loCnv.Ejecutar( FORCEEXT(lc_File,'MNX'), '', '', '', '1', '0', '1',.F.,.F.,.T. ) + loCnv.Ejecutar( FORCEEXT(lc_OutputFile,'MNX'), '', '', '', '1', '0', '1',.F.,.F.,.T. ) *-- Regenero el DBC - loCnv.Ejecutar( FORCEEXT(lc_File,'MN2'), '', '', '', '1', '0', '1',.F.,.F.,.T. ) + loCnv.Ejecutar( FORCEEXT(lc_OutputFile,'MN2'), '', '', '', '1', '0', '1',.F.,.F.,.T. ) *-- Renombro el DC2 a DC3 (ORIGINAL) RENAME (FORCEEXT(lc_OutputFile,'MN2')) TO (FORCEEXT(lc_OutputFile,'MN3')) *-- Genero el DC2 desde el DBC regenerado - loCnv.Ejecutar( FORCEEXT(lc_File,'MNX'), '', '', '', '1', '0', '1',.F.,.F.,.T. ) + loCnv.Ejecutar( FORCEEXT(lc_OutputFile,'MNX'), '', '', '', '1', '0', '1',.F.,.F.,.T. ) *-- Comparo los MN2 y MN3 lnLenHeader = LEN( loCnv.get_PROGRAM_HEADER() ) - lcMN2 = SUBSTR( FILETOSTR( FORCEEXT(lc_File,'MN2') ), lnLenHeader ) - lcMN3 = SUBSTR( FILETOSTR( FORCEEXT(lc_File,'MN3') ), lnLenHeader ) + lcMN2 = SUBSTR( FILETOSTR( FORCEEXT(lc_OutputFile,'MN2') ), lnLenHeader ) + lcMN3 = SUBSTR( FILETOSTR( FORCEEXT(lc_OutputFile,'MN3') ), lnLenHeader ) *-- Visualización de valores @@ -291,17 +291,17 @@ DEFINE CLASS ft__foxbin2prg__c_conversor_prg_a_mnx AS FxuTestCase OF FxuTestCase oFXU_LIB.copiarArchivosParaTest( FORCEEXT(lc_File,'*') ) *-- Genero el DC2 - loCnv.Ejecutar( FORCEEXT(lc_File,'MNX'), '', '', '', '1', '0', '1',.F.,.F.,.T. ) + loCnv.Ejecutar( FORCEEXT(lc_OutputFile,'MNX'), '', '', '', '1', '0', '1',.F.,.F.,.T. ) *-- Regenero el DBC - loCnv.Ejecutar( FORCEEXT(lc_File,'MN2'), '', '', '', '1', '0', '1',.F.,.F.,.T. ) + loCnv.Ejecutar( FORCEEXT(lc_OutputFile,'MN2'), '', '', '', '1', '0', '1',.F.,.F.,.T. ) *-- Renombro el DC2 a DC3 (ORIGINAL) RENAME (FORCEEXT(lc_OutputFile,'MN2')) TO (FORCEEXT(lc_OutputFile,'MN3')) *-- Genero el DC2 desde el DBC regenerado - loCnv.Ejecutar( FORCEEXT(lc_File,'MNX'), '', '', '', '1', '0', '1',.F.,.F.,.T. ) + loCnv.Ejecutar( FORCEEXT(lc_OutputFile,'MNX'), '', '', '', '1', '0', '1',.F.,.F.,.T. ) *-- Comparo los MN2 y MN3 lnLenHeader = LEN( loCnv.get_PROGRAM_HEADER() ) - lcMN2 = SUBSTR( FILETOSTR( FORCEEXT(lc_File,'MN2') ), lnLenHeader ) - lcMN3 = SUBSTR( FILETOSTR( FORCEEXT(lc_File,'MN3') ), lnLenHeader ) + lcMN2 = SUBSTR( FILETOSTR( FORCEEXT(lc_OutputFile,'MN2') ), lnLenHeader ) + lcMN3 = SUBSTR( FILETOSTR( FORCEEXT(lc_OutputFile,'MN3') ), lnLenHeader ) *-- Visualización de valores @@ -351,17 +351,17 @@ DEFINE CLASS ft__foxbin2prg__c_conversor_prg_a_mnx AS FxuTestCase OF FxuTestCase oFXU_LIB.copiarArchivosParaTest( FORCEEXT(lc_File,'*') ) *-- Genero el DC2 - loCnv.Ejecutar( FORCEEXT(lc_File,'MNX'), '', '', '', '1', '0', '1',.F.,.F.,.T. ) + loCnv.Ejecutar( FORCEEXT(lc_OutputFile,'MNX'), '', '', '', '1', '0', '1',.F.,.F.,.T. ) *-- Regenero el DBC - loCnv.Ejecutar( FORCEEXT(lc_File,'MN2'), '', '', '', '1', '0', '1',.F.,.F.,.T. ) + loCnv.Ejecutar( FORCEEXT(lc_OutputFile,'MN2'), '', '', '', '1', '0', '1',.F.,.F.,.T. ) *-- Renombro el DC2 a DC3 (ORIGINAL) RENAME (FORCEEXT(lc_OutputFile,'MN2')) TO (FORCEEXT(lc_OutputFile,'MN3')) *-- Genero el DC2 desde el DBC regenerado - loCnv.Ejecutar( FORCEEXT(lc_File,'MNX'), '', '', '', '1', '0', '1',.F.,.F.,.T. ) + loCnv.Ejecutar( FORCEEXT(lc_OutputFile,'MNX'), '', '', '', '1', '0', '1',.F.,.F.,.T. ) *-- Comparo los MN2 y MN3 lnLenHeader = LEN( loCnv.get_PROGRAM_HEADER() ) - lcMN2 = SUBSTR( FILETOSTR( FORCEEXT(lc_File,'MN2') ), lnLenHeader ) - lcMN3 = SUBSTR( FILETOSTR( FORCEEXT(lc_File,'MN3') ), lnLenHeader ) + lcMN2 = SUBSTR( FILETOSTR( FORCEEXT(lc_OutputFile,'MN2') ), lnLenHeader ) + lcMN3 = SUBSTR( FILETOSTR( FORCEEXT(lc_OutputFile,'MN3') ), lnLenHeader ) *-- Visualización de valores diff --git a/foxbin2prg.prg b/foxbin2prg.prg index 342095b..30509dd 100644 --- a/foxbin2prg.prg +++ b/foxbin2prg.prg @@ -1654,6 +1654,10 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM ENDWITH && THIS CATCH TO loEx + loEx.UserValue = loEx.UserValue + 'lcConfigFile = [' + TRANSFORM(lcConfigFile) + ']' + CR_LF + loEx.UserValue = loEx.UserValue + 'lc_CFG_Path = [' + TRANSFORM(lc_CFG_Path) + ']' + CR_LF + loEx.UserValue = loEx.UserValue + 'lcValue = [' + TRANSFORM(lcValue) + ']' + CR_LF + IF THIS.l_Debug AND _VFP.STARTMODE = 0 SET STEP ON ENDIF From a8a68c6de184ff835d79434e24b5e3c48657db52 Mon Sep 17 00:00:00 2001 From: fdbozzo Date: Thu, 1 Jan 2015 20:55:35 +0100 Subject: [PATCH 22/23] Changeset: 590 fdbozzo - 01/01/2015 20:52:44: - Regenerar EXE --- foxbin2prg.exe | Bin 509708 -> 509905 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/foxbin2prg.exe b/foxbin2prg.exe index 00e4b7dc2efb41810b5f77e0dc3300fe54db11bd..dd4f859b7d8d9d89510036ef208a8451b4ba5aac 100644 GIT binary patch delta 13552 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 delta 13321 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 Date: Thu, 1 Jan 2015 21:06:11 +0100 Subject: [PATCH 23/23] =?UTF-8?q?Changeset:=20592=20fdbozzo=20-=2001/01/20?= =?UTF-8?q?15=2020:58:59:=20-=20Actualizaci=C3=B3n=20del=20archivo=20de=20?= =?UTF-8?q?log=20de=20versi=C3=B3n?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- FoxBin2PRGVersionFile.txt | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/FoxBin2PRGVersionFile.txt b/FoxBin2PRGVersionFile.txt index 11b4dd7..47019ad 100644 --- a/FoxBin2PRGVersionFile.txt +++ b/FoxBin2PRGVersionFile.txt @@ -2,8 +2,8 @@ Lparameters toUpdateInfo Local lcNote With toUpdateInfo - .VersionNumber = 'v1.19.38' - .VersionDate = Date(2014,12,13) + .VersionNumber = 'v1.19.39' + .VersionDate = Date(2015,01,01) .SourceFileUrl = 'http://vfpxrepository.com/dl/thorupdate/Projects/FoxBin2Prg/FoxBin2Prg.Zip' .Link = 'http://vfpx.codeplex.com/wikipage?title=FoxBin2PRG' @@ -17,6 +17,14 @@ Demo video using FoxBin2Prg with PlasticSCM: http://youtu.be/sE4wQ50Itqg Change History ------------------------------------------------------------- +2015/01/01 v1.19.39 +- Bug fix vbs: vbs scripts does not show FoxBin2Prg process errors correctly +- When using BIN2PRG or PRG2BIN keywords with FoxBin2Prg command line, allow processing one file (Mike Potjer) +- Add keyword SHOWMSG and use INTERACTIVE keyword for an interactive dialog (Mike Potjer) +- When processing a directory from commandline with foxbin2prg alone and the INTERACTIVE keyword, show a dialog to ask what to process (Mike Potjer) +- Bug fix dc2: DisplayClass and DisplayClassLibrary values got the wrong value "Default" and not the corresponding own values (Christopher Kurth/Ryan Harris) +- Deleted recompilation scripts for language, because it is an automatic selection now + 2014/12/13 v1.19.38 - Feature: Now is possible to use FoxBin2Prg for batch conversions directly from the File Explorer (see README.txt), without the need of vbs scripts, that sometimes can make trouble or are not permitted by IT department (Francisco Prieto) - Feature: Enhanced Multilanguage support by 3 ways: 1-Automatic [DEFAULT] (depending on VERSION(3)); 2-By parameter, using the new method ChangeLanguage(); 3-Using the new setting "Language" in foxbin2prg.cfg