diff --git a/foxbin2prg.cfg b/foxbin2prg.cfg new file mode 100644 index 0000000..9db8ddc --- /dev/null +++ b/foxbin2prg.cfg @@ -0,0 +1,42 @@ +**************************************************************************************************** +* FOXBIN2PRG v1.19.9+ +* CONFIGURATION FILE / ARCHIVO DE CONFIGURACIÓN +*--------------------------------------------------------------------------------------------------- +* DON'T MODIFY THIS DOCUMENTATION SECTION / NO MODIFIQUE ESTA SECCIÓN DE DOCUMENTACIÓN +* +* DETAIL OF SUPPORTED VALUES / DETALLE DE VALORES SOPORTADOS +* If no values given, this are the defaults / Si no se proporcionan valores, estos son los predeterminados +* +* extension: xx2 && Default FoxBin2Prg extensions ends in '2' / Las extensiones por defecto de FoxBin2Prg terminan en '2' +* DontShowProgress: 0 && Show progress bar by default in multi-file processing / Mostrar barra de progreso por defecto en procesamiento multi-archivo +* DontShowErrors: 1 && Show message errors by default / Mostrar mensajes de error por defecto +* NoTimestamps: 1 && Crear timespampt by default for minimize differences / Vaciar Timestamps por defecto para minimizar diferencias +* Debug: 1 && Activate individual .Log by default / Activar .Log por defecto +* ExtraBackupLevels: 0 && By default 1 BAK is created. With this you can make more .N.BAK / Por defecto 1 BAK es creado. Con esto puede crear más .N.BAK +* +* EN: Note: This values have precedence over internal parameters and parameters used on scripts +* ES: Nota: Estos valores tienen precedencia sobre los parámetros internos y los parámetros usados en los scripts +* +* END DOCUMENTATION SECTION / FIN DE LA SECCIÓN DE DOCUMENTACIÓN +**************************************************************************************************** + +* EN: Uncomment for SourceSafe compatibility. You can change the extension on the right side. +* ES: Descomentar para compatibilidad con SourceSafe. Puede cambiar la extensión del lado derecho. +*--------------------------------------------------------------------------------------------------- +*extension: pj2=pja +*extension: vc2=vca +*extension: sc2=sca +*extension: fr2=fra +*extension: lb2=lba +*extension: mn2=mna +*extension: db2=dba +*extension: dc2=dca + +* EN: Uncomment to activate the new value, comment to deactivate and use the default +* ES: Descomente para activar el nuevo valor, comente para desactivarlo y usar el predeterminado +*--------------------------------------------------------------------------------------------------- +*DontShowProgress: 0 +*DontShowErrors: 1 +*NoTimestamps: 1 +*Debug: 1 +*ExtraBackupLevels: 3 diff --git a/foxbin2prg.cfg_ b/foxbin2prg.cfg_ deleted file mode 100644 index 23976ac..0000000 --- a/foxbin2prg.cfg_ +++ /dev/null @@ -1,3 +0,0 @@ -extension: vc2=vca -extension: sc2=sca -extension: pj2=pja diff --git a/foxbin2prg.pj2 b/foxbin2prg.pj2 index 5f829f6..d76e33b 100644 --- a/foxbin2prg.pj2 +++ b/foxbin2prg.pj2 @@ -26,7 +26,7 @@ _LegalTrademark = "Open Source" _ProductName = " FOXBIN2PRG" _MajorVer = "1" _MinorVer = "19" -_Revision = " 230" +_Revision = " 246" _LanguageID = "1034" _AutoIncrement = "1" * @@ -50,8 +50,8 @@ MODIFY PROJECT 'foxbin2prg.pjx' NOWAIT NOSHOW NOPROJECTHOOK loProject = _VFP.Projects('foxbin2prg.pjx') WITH loProject.FILES - .ADD('config\config.fpw') && *< FileMetadata: Type="T" Cpid="1252" Timestamp="1132857145" ID="1131721714" ObjRev="0" /> - .ADD('foxbin2prg.prg') && *< FileMetadata: Type="P" Cpid="1252" Timestamp="1145283887" ID="1130644423" ObjRev="544" /> + .ADD('config\config.fpw') && *< FileMetadata: Type="T" Cpid="1252" Timestamp="0" ID="1131721714" ObjRev="0" /> + .ADD('foxbin2prg.prg') && *< FileMetadata: Type="P" Cpid="1252" Timestamp="0" ID="1130644423" ObjRev="544" /> * .ITEM('__newproject.f2b').Remove() diff --git a/foxbin2prg.pjt b/foxbin2prg.pjt index 7812e03..7553918 100644 Binary files a/foxbin2prg.pjt and b/foxbin2prg.pjt differ diff --git a/foxbin2prg.pjx b/foxbin2prg.pjx index ba87bdc..593e994 100644 Binary files a/foxbin2prg.pjx and b/foxbin2prg.pjx differ diff --git a/foxbin2prg.prg b/foxbin2prg.prg index c389fa2..f7778f5 100644 --- a/foxbin2prg.prg +++ b/foxbin2prg.prg @@ -261,54 +261,54 @@ LPARAMETERS tc_InputFile, tcType, tcTextName, tlGenText, tcDontShowErrors, tcDeb ******************************************************************************************************************* *-- INTERNACIONALIZACIÓN / INTERNATIONALIZATION ******************************************************************************************************************* -#IF FILE('foxbin2prg.h') - #INCLUDE FOXBIN2PRG.H +#IF FILE('foxbin2prg.h') && DO NOT CHANGE THIS! Just rename the .H file + #INCLUDE foxbin2prg.h && DO NOT CHANGE THIS! Just rename the .H file #ELSE *--------------------------------------------------------------------------------------------------------- *-- TRANSLACIÓN AL ESPAÑOL *--------------------------------------------------------------------------------------------------------- - #DEFINE C_ASTERISK_EXT_NOT_ALLOWED_LOC 'No se admiten extensiones * o ? porque es peligroso (se pueden pisar binarios con archivo xx2 vacíos).' - #DEFINE C_BACKLINK_CANT_UPDATE_BL_LOC 'No se pudo actualizar el backlink' - #DEFINE C_BACKLINK_OF_TABLE_LOC 'de la tabla' - #DEFINE C_BACKUP_OF_LOC 'Backup de: ' - #DEFINE C_CANT_GENERATE_FILE_BECAUSE_IT_IS_READONLY_LOC 'No se puede generar el archivo [<>] porque es ReadOnly' - #DEFINE C_CONFIGFILE_LOC 'Archivo de configuración:' - #DEFINE C_CONVERTER_UNLOAD_LOC 'Descarga del conversor' - #DEFINE C_CONVERTING_FILE_LOC 'Convirtiendo archivo' - #DEFINE 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 <>' - #DEFINE C_DUPLICATED_FILE_LOC 'Archivo duplicado' - #DEFINE C_ENDDEFINE_MARKER_NOT_FOUND_LOC 'No se ha encontrado el marcador de fin [ENDDEFINE] de la línea <> para el identificador [<>]' - #DEFINE C_END_MARKER_NOT_FOUND_LOC 'No se ha encontrado el marcador de fin [<>] que cierra al marcador de inicio [<>] de la línea <>' - #DEFINE C_FIELD_NOT_FOUND_ON_FILE_STRUCTURE_LOC 'No se encontró el campo [<>] en la estructura del archivo <>' - #DEFINE C_FILE_DOESNT_EXIST_LOC 'El archivo no existe:' - #DEFINE C_FILE_NAME_IS_NOT_SUPPORTED_LOC 'El archivo [<<.c_InputFile>>] no está soportado' - #DEFINE C_FILE_NOT_FOUND_LOC 'No se encontró el archivo' - #DEFINE C_EXTENSION_RECONFIGURATION_LOC 'Reconfiguración de extensión:' - #DEFINE C_FOXBIN2PRG_ERROR_CAPTION_LOC 'FOXBIN2PRG: ERROR!!' - #DEFINE C_FOXBIN2PRG_INFO_SINTAX_LOC 'FOXBIN2PRG: INFORMACIÓN DE SINTAXIS' - #DEFINE C_FOXBIN2PRG_INFO_SINTAX_EXAMPLE_LOC 'FOXBIN2PRG [cType_ND cTextName_ND cGenText_ND cNoMostrarErrores cDebug]' + CR_LF + CR_LF ; - + 'Ejemplo para generar los TXT de todos los VCX de "c:\desa\clases", sin mostrar ventana de error y generando archivo LOG: ' + CR_LF ; - + ' FOXBIN2PRG "c:\desa\clases\*.vcx" "0" "0" "0" "1" "1"' + CR_LF + CR_LF ; - + 'Ejemplo para generar los VCX de todos los TXT de "c:\desa\clases", sin mostrar ventana de error y sin LOG: ' + CR_LF ; - + ' FOXBIN2PRG "c:\desa\clases\*.vc2" "0" "0" "0" "1" "0"' - #DEFINE C_FOXBIN2PRG_JUST_VFP_9_LOC '¡FOXBIN2PRG es solo para Visual FoxPro 9.0!' - #DEFINE C_FOXBIN2PRG_WARN_CAPTION_LOC 'FOXBIN2PRG: ¡ATENCIÓN!' - #DEFINE C_MENU_NOT_IN_VFP9_FORMAT_LOC 'El Menú [<>] NO está en formato VFP 9! - Por favor convertirlo a VFP 9 con MODIFY MENU <>' - #DEFINE C_NAMES_CAPITALIZATION_PROGRAM_FOUND_LOC '* Se ha encontrado el programa de capitalización de nombres [<>]' - #DEFINE C_NAMES_CAPITALIZATION_PROGRAM_NOT_FOUND_LOC '* No se ha encontrado el programa de capitalización de nombres [<>]' - #DEFINE C_OBJECT_NAME_WITHOUT_OBJECT_OREG_LOC 'Objeto [<>] no contiene el objeto oReg (nivel <>)' - #DEFINE C_ONLY_SETNAME_AND_GETNAME_RECOGNIZED_LOC 'Operación no reconocida. Solo re reconoce SETNAME y GETNAME.' - #DEFINE C_OUTPUT_FILE_IS_NOT_OVERWRITEN_LOC 'Optimización: El archivo de salida [<>] no se sobreescribe por ser igual al generado.' - #DEFINE C_PROCEDURE_NOT_CLOSED_ON_LINE_LOC 'Procedimiento sin cerrar. La última línea de código debe ser ENDPROC. [<>]' - #DEFINE C_PROCESSING_LOC 'Procesando archivo' - #DEFINE C_PROCESS_PROGRESS_LOC 'Avance del proceso:' - #DEFINE C_PROPERTY_NAME_NOT_RECOGNIZED_LOC 'Propiedad [<>] no reconocida.' - #DEFINE C_REQUESTING_CAPITALIZATION_OF_FILE_LOC '- Solicitado capitalizar el archivo [<>]' - #DEFINE C_SOURCEFILE_LOC 'Archivo origen: ' - #DEFINE 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 <>' - #DEFINE 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 <>' - #DEFINE C_UNKNOWN_CLASS_NAME_LOC 'Clase [<>] desconocida' - #DEFINE 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)' + #DEFINE C_ASTERISK_EXT_NOT_ALLOWED_LOC "No se admiten extensiones * o ? porque es peligroso (se pueden pisar binarios con archivo xx2 vacíos)." + #DEFINE C_BACKLINK_CANT_UPDATE_BL_LOC "No se pudo actualizar el backlink" + #DEFINE C_BACKLINK_OF_TABLE_LOC "de la tabla" + #DEFINE C_BACKUP_OF_LOC "Haciendo Backup de: " + #DEFINE C_CANT_GENERATE_FILE_BECAUSE_IT_IS_READONLY_LOC "No se puede generar el archivo [<>] porque es ReadOnly" + #DEFINE C_CONFIGFILE_LOC "Usando archivo de configuración:" + #DEFINE C_CONVERTER_UNLOAD_LOC "Descarga del conversor" + #DEFINE C_CONVERTING_FILE_LOC "Convirtiendo archivo" + #DEFINE 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 <>" + #DEFINE C_DUPLICATED_FILE_LOC "Archivo duplicado" + #DEFINE C_ENDDEFINE_MARKER_NOT_FOUND_LOC "No se ha encontrado el marcador de fin [ENDDEFINE] de la línea <> para el identificador [<>]" + #DEFINE C_END_MARKER_NOT_FOUND_LOC "No se ha encontrado el marcador de fin [<>] que cierra al marcador de inicio [<>] de la línea <>" + #DEFINE C_FIELD_NOT_FOUND_ON_FILE_STRUCTURE_LOC "No se encontró el campo [<>] en la estructura del archivo <>" + #DEFINE C_FILE_DOESNT_EXIST_LOC "El archivo no existe:" + #DEFINE C_FILE_NAME_IS_NOT_SUPPORTED_LOC "El archivo [<<.c_InputFile>>] no está soportado" + #DEFINE C_FILE_NOT_FOUND_LOC "No se encontró el archivo" + #DEFINE C_EXTENSION_RECONFIGURATION_LOC "Reconfiguración de extensión:" + #DEFINE C_FOXBIN2PRG_ERROR_CAPTION_LOC "FOXBIN2PRG: ERROR!!" + #DEFINE C_FOXBIN2PRG_INFO_SINTAX_LOC "FOXBIN2PRG: INFORMACIÓN DE SINTAXIS" + #DEFINE C_FOXBIN2PRG_INFO_SINTAX_EXAMPLE_LOC "FOXBIN2PRG [,cType ,cTextName ,cGenText ,cNoMostrarErrores ,cDebug, cDontShowProgress, cOriginalFileName, cRecompile, cNoTimestamps]" + CR_LF + CR_LF ; + + "Ejemplo para generar los TXT de todos los VCX de 'c:\desa\clases', sin mostrar ventana de error y generando archivo LOG: " + CR_LF ; + + " FOXBIN2PRG 'c:\desa\clases\*.vcx' '0' '0' '0' '1' '1'" + CR_LF + CR_LF ; + + "Ejemplo para generar los VCX de todos los TXT de 'c:\desa\clases', sin mostrar ventana de error y sin LOG: " + CR_LF ; + + " FOXBIN2PRG 'c:\desa\clases\*.vc2' '0' '0' '0' '1' '0'" + #DEFINE C_FOXBIN2PRG_JUST_VFP_9_LOC "¡FOXBIN2PRG es solo para Visual FoxPro 9.0!" + #DEFINE C_FOXBIN2PRG_WARN_CAPTION_LOC "FOXBIN2PRG: ¡ATENCIÓN!" + #DEFINE C_MENU_NOT_IN_VFP9_FORMAT_LOC "El Menú [<>] NO está en formato VFP 9! - Por favor convertirlo a VFP 9 con MODIFY MENU <>" + #DEFINE C_NAMES_CAPITALIZATION_PROGRAM_FOUND_LOC "* Se ha encontrado el programa de capitalización de nombres [<>]" + #DEFINE C_NAMES_CAPITALIZATION_PROGRAM_NOT_FOUND_LOC "* No se ha encontrado el programa de capitalización de nombres [<>]" + #DEFINE C_OBJECT_NAME_WITHOUT_OBJECT_OREG_LOC "Objeto [<>] no contiene el objeto oReg (nivel <>)" + #DEFINE C_ONLY_SETNAME_AND_GETNAME_RECOGNIZED_LOC "Operación no reconocida. Solo re reconoce SETNAME y GETNAME." + #DEFINE C_OUTPUT_FILE_IS_NOT_OVERWRITEN_LOC "Optimización: El archivo de salida [<>] no se sobreescribe por ser igual al generado." + #DEFINE C_PROCEDURE_NOT_CLOSED_ON_LINE_LOC "Procedimiento sin cerrar. La última línea de código debe ser ENDPROC. [<>]" + #DEFINE C_PROCESSING_LOC "Procesando archivo" + #DEFINE C_PROCESS_PROGRESS_LOC "Avance del proceso:" + #DEFINE C_PROPERTY_NAME_NOT_RECOGNIZED_LOC "Propiedad [<>] no reconocida." + #DEFINE C_REQUESTING_CAPITALIZATION_OF_FILE_LOC "- Solicitado capitalizar el archivo [<>]" + #DEFINE C_SOURCEFILE_LOC "Archivo origen: " + #DEFINE 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 <>" + #DEFINE 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 <>" + #DEFINE C_UNKNOWN_CLASS_NAME_LOC "Clase [<>] desconocida" + #DEFINE 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)" #ENDIF ******************************************************************************************************************* @@ -374,6 +374,7 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM + [] ; + [] ; + [] ; + + [] ; + [] ; + [] ; + [] ; @@ -388,6 +389,7 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM + [] ; + [] ; + [] ; + + [] ; + [] ; + [] ; + [] ; @@ -415,10 +417,11 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM l_ShowErrors = .F. l_ShowProgress = .F. l_Recompile = .F. - l_UseTimestamps = .T. + l_UseTimestamps = .F. l_MethodSort_Enabled = .T. && Para Unit Testing se puede cambiar a .F. para buscar diferencias l_PropSort_Enabled = .T. && Para Unit Testing se puede cambiar a .F. para buscar diferencias l_ReportSort_Enabled = .T. && Para Unit Testing se puede cambiar a .F. para buscar diferencias + n_ExtraBackupLevels = 0 nClassTimeStamp = '' o_Conversor = NULL o_Frm_Avance = NULL @@ -664,6 +667,70 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM PROCEDURE cargar_frm_avance THIS.o_Frm_Avance = CREATEOBJECT("frm_avance") ENDPROC + + + PROCEDURE EvaluarConfiguracion + LPARAMETERS tcDontShowProgress, tcDontShowErrors, tcNoTimestamps, tcDebug, tcRecompile, tcExtraBackupLevels + + LOCAL lcConfigFile, llExisteConfig, laConfig(1), I, lcConfData, lcExt + lcConfigFile = FORCEEXT( THIS.c_Foxbin2prg_FullPath, 'CFG' ) + llExisteConfig = FILE( lcConfigFile ) + + IF llExisteConfig + THIS.writeLog( C_CONFIGFILE_LOC + ' ' + lcConfigFile ) + + FOR I = 1 TO ALINES( laConfig, FILETOSTR( lcConfigFile ), 1+4 ) + laConfig(I) = LOWER( laConfig(I) ) + + DO CASE + CASE LEFT( laConfig(I), 10 ) == LOWER('Extension:') + lcConfData = ALLTRIM( SUBSTR( laConfig(I), 11 ) ) + lcExt = 'c_' + ALLTRIM( GETWORDNUM( lcConfData, 1, '=' ) ) + IF PEMSTATUS( THIS, lcExt, 5 ) + THIS.ADDPROPERTY( lcExt, UPPER( ALLTRIM( GETWORDNUM( lcConfData, 2, '=' ) ) ) ) + *THIS.writeLog( 'Reconfiguración de extensión:' + ' ' + lcExt + ' a ' + UPPER( ALLTRIM( GETWORDNUM( lcConfData, 2, '=' ) ) ) ) + THIS.writeLog( JUSTFNAME(lcConfigFile) + ' > ' + C_EXTENSION_RECONFIGURATION_LOC + ' ' + lcExt + ' a ' + UPPER( ALLTRIM( GETWORDNUM( lcConfData, 2, '=' ) ) ) ) + ENDIF + + CASE LEFT( laConfig(I), 17 ) == LOWER('DontShowProgress:') + tcDontShowProgress = ALLTRIM( SUBSTR( laConfig(I), 18 ) ) + THIS.writeLog( JUSTFNAME(lcConfigFile) + ' > tcDontShowProgress: ' + TRANSFORM(tcDontShowProgress) ) + + CASE LEFT( laConfig(I), 15 ) == LOWER('DontShowErrors:') + tcDontShowErrors = ALLTRIM( SUBSTR( laConfig(I), 16 ) ) + THIS.writeLog( JUSTFNAME(lcConfigFile) + ' > tcDontShowErrors: ' + TRANSFORM(tcDontShowErrors) ) + + CASE LEFT( laConfig(I), 13 ) == LOWER('NoTimestamps:') + tcNoTimestamps = ALLTRIM( SUBSTR( laConfig(I), 14 ) ) + THIS.writeLog( JUSTFNAME(lcConfigFile) + ' > tcNoTimestamps: ' + TRANSFORM(tcNoTimestamps) ) + + CASE LEFT( laConfig(I), 6 ) == LOWER('Debug:') + tcDebug = ALLTRIM( SUBSTR( laConfig(I), 7 ) ) + THIS.writeLog( JUSTFNAME(lcConfigFile) + ' > tcDebug: ' + TRANSFORM(tcDebug) ) + + CASE LEFT( laConfig(I), 18 ) == LOWER('ExtraBackupLevels:') + tcExtraBackupLevels = ALLTRIM( SUBSTR( laConfig(I), 19 ) ) + THIS.writeLog( JUSTFNAME(lcConfigFile) + ' > tcExtraBackupLevels: ' + TRANSFORM(tcExtraBackupLevels) ) + + ENDCASE + ENDFOR + ENDIF + + THIS.l_ShowProgress = NOT (TRANSFORM(tcDontShowProgress)=='1') + THIS.l_ShowErrors = NOT (TRANSFORM(tcDontShowErrors) == '1') + THIS.l_Recompile = (EMPTY(tcRecompile) OR TRANSFORM(tcRecompile) == '1' OR DIRECTORY(tcRecompile)) + THIS.l_UseTimestamps = (TRANSFORM(tcNoTimestamps) == '1') + THIS.l_Debug = (TRANSFORM(tcDebug)=='1' OR FILE(FORCEEXT(THIS.c_Foxbin2prg_FullPath,'LOG'))) + THIS.n_ExtraBackupLevels = INT(VAL(TRANSFORM(tcExtraBackupLevels))) + + THIS.writeLog( '---' ) + THIS.writeLog( '> l_ShowProgress: ' + TRANSFORM(THIS.l_ShowProgress) ) + THIS.writeLog( '> l_ShowErrors: ' + TRANSFORM(THIS.l_ShowErrors) ) + THIS.writeLog( '> l_Recompile: ' + TRANSFORM(THIS.l_Recompile) + ' (' + EVL(tcRecompile,'') + ')' ) + THIS.writeLog( '> l_UseTimestamps: ' + TRANSFORM(THIS.l_UseTimestamps) ) + THIS.writeLog( '> l_Debug: ' + TRANSFORM(THIS.l_Debug) ) + THIS.writeLog( '> n_ExtraBackupLevels: ' + TRANSFORM(THIS.n_ExtraBackupLevels) ) + ENDPROC PROCEDURE ejecutar @@ -687,27 +754,38 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM * 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 * tcNoTimestamps (v? IN ) Indica si se deben vacar ('1') o no ['0'] los timestamps de registro + * tcBackupLevels (v? IN ) Indica la cantidad de niveles de backup a realizar (por defecto '1') *-------------------------------------------------------------------------------------------------------------- LPARAMETERS tc_InputFile, tcType, tcTextName, tlGenText, tcDontShowErrors, tcDebug, tcDontShowProgress ; - , toModulo, toEx AS EXCEPTION, tlRelanzarError, tcOriginalFileName, tcRecompile, tcNoTimestamps + , toModulo, toEx AS EXCEPTION, tlRelanzarError, tcOriginalFileName, tcRecompile, tcNoTimestamps ; + , tcBackupLevels TRY - LOCAL I, lcPath, lnCodError, lcFileSpec, lcFile, laFiles(1,5), laConfig(1), lcConfigFile, lcExt ; - , llExisteConfig, lcConfData, lnFileCount, lcErrorInfo ; + LOCAL I, lcPath, lnCodError, lcFileSpec, lcFile, laFiles(1,5) ; + , lnFileCount, lcErrorInfo ; , loEx AS EXCEPTION ; , loFSO AS Scripting.FileSystemObject lnCodError = 0 + + THIS.writeLog( THIS.c_Foxbin2prg_FullPath + CR_LF ; + + C_TAB + 'tc_InputFile: ' + TRANSFORM(tc_InputFile) + CR_LF ; + + C_TAB + 'tcType: ' + TRANSFORM(tcType) + CR_LF; + + C_TAB + 'tcTextName: ' + TRANSFORM(tcTextName) + CR_LF ; + + C_TAB + 'tlGenText: ' + TRANSFORM(tlGenText) + CR_LF ; + + C_TAB + 'tcDontShowErrors: ' + TRANSFORM(tcDontShowErrors) + CR_LF ; + + C_TAB + 'tcDebug: ' + TRANSFORM(tcDebug) + CR_LF ; + + C_TAB + 'tcDontShowProgress: ' + TRANSFORM(tcDontShowProgress) + CR_LF ; + + C_TAB + 'toModulo: ' + TRANSFORM(toModulo) + CR_LF ; + + C_TAB + 'toEx: ' + TRANSFORM(toEx) + CR_LF ; + + C_TAB + 'tlRelanzarError: ' + TRANSFORM(tlRelanzarError) + CR_LF ; + + C_TAB + 'tcOriginalFileName: ' + TRANSFORM(tcOriginalFileName) + CR_LF ; + + C_TAB + 'tcRecompile: ' + TRANSFORM(tcRecompile) + CR_LF ; + + C_TAB + 'tcNoTimestamps: ' + TRANSFORM(tcNoTimestamps) ) + tcRecompile = EVL(tcRecompile,'1') tcNoTimestamps = EVL(tcNoTimestamps,'0') - *SET DELETED ON - *SET DATE YMD - *SET HOURS TO 24 - *SET CENTURY ON - *SET SAFETY OFF - *SET TABLEPROMPT OFF - IF _VFP.STARTMODE > 0 SET ESCAPE OFF ENDIF @@ -727,35 +805,14 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM OTHERWISE *-- Ejecución normal - THIS.l_ShowProgress = NOT (TRANSFORM(tcDontShowProgress)=='1') - THIS.l_ShowErrors = NOT (TRANSFORM(tcDontShowErrors) == '1') - THIS.l_Recompile = (EMPTY(tcRecompile) OR TRANSFORM(tcRecompile) == '1' OR DIRECTORY(tcRecompile)) - THIS.l_UseTimestamps = (EMPTY(tcNoTimestamps) OR TRANSFORM(tcNoTimestamps) == '0') - THIS.l_Debug = (TRANSFORM(tcDebug)=='1' OR FILE(FORCEEXT(THIS.c_Foxbin2prg_FullPath,'LOG'))) + + *-- ARCHIVO DE CONFIGURACIÓN + THIS.EvaluarConfiguracion( @tcDontShowProgress, @tcDontShowErrors, @tcNoTimestamps, @tcDebug, @tcRecompile, @tcBackupLevels ) IF THIS.l_ShowProgress THIS.cargar_frm_avance() ENDIF - *-- Configuración - lcConfigFile = FORCEEXT( THIS.c_Foxbin2prg_FullPath, 'CFG' ) - llExisteConfig = FILE( lcConfigFile ) - - IF llExisteConfig - FOR I = 1 TO ALINES( laConfig, FILETOSTR( lcConfigFile ), 1+4 ) - IF LOWER( LEFT( laConfig(I), 10 ) ) == 'extension:' - lcConfData = ALLTRIM( SUBSTR( laConfig(I), 11 ) ) - lcExt = 'c_' + ALLTRIM( GETWORDNUM( lcConfData, 1, '=' ) ) - IF PEMSTATUS( THIS, lcExt, 5 ) - THIS.ADDPROPERTY( lcExt, UPPER( ALLTRIM( GETWORDNUM( lcConfData, 2, '=' ) ) ) ) - *THIS.writeLog( 'Reconfiguración de extensión:' + ' ' + lcExt + ' a ' + UPPER( ALLTRIM( GETWORDNUM( lcConfData, 2, '=' ) ) ) ) - THIS.writeLog( C_EXTENSION_RECONFIGURATION_LOC + ' ' + lcExt + ' a ' + UPPER( ALLTRIM( GETWORDNUM( lcConfData, 2, '=' ) ) ) ) - ENDIF - ENDIF - ENDFOR - ENDIF - - *-- Evaluación de FileSpec de entrada DO CASE CASE '*' $ JUSTEXT( tc_InputFile ) OR '?' $ JUSTEXT( tc_InputFile ) @@ -783,11 +840,6 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM IF FILE( THIS.c_LogFile ) ERASE ( THIS.c_LogFile ) ENDIF - THIS.writeLog( THIS.c_Foxbin2prg_FullPath + ' - FileSpec: ' + EVL(tc_InputFile,'') ) - IF llExisteConfig - *THIS.writeLog( 'ConfigFile:' + ' ' + lcConfigFile ) - THIS.writeLog( C_CONFIGFILE_LOC + ' ' + lcConfigFile ) - ENDIF ENDIF lnFileCount = ADIR( laFiles, lcFileSpec, '', 1 ) @@ -850,13 +902,7 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM ENDCASE THIS.c_LogFile = tc_InputFile + '.LOG' - - IF THIS.l_Debug - IF FILE( THIS.c_LogFile ) - ERASE ( THIS.c_LogFile ) - ENDIF - THIS.writeLog( THIS.c_Foxbin2prg_FullPath + ' - FileSpec: ' + EVL(tc_InputFile,'') ) - ENDIF + ERASE ( THIS.c_LogFile ) lnCodError = THIS.Convertir( tc_InputFile, toModulo, toEx, .T., tcOriginalFileName ) ENDIF @@ -940,7 +986,7 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM .c_OriginalFileName = FORCEEXT(.c_OriginalFileName,'pjx') ENDIF - THIS.writeLog( 'c_InputFile=' + .c_InputFile ) + THIS.writeLog( '> c_OriginalFileName: ' + .c_OriginalFileName ) .o_Conversor = NULL IF NOT FILE(.c_InputFile) @@ -1122,9 +1168,9 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM *-------------------------------------------------------------------------------------------------------------- LPARAMETERS tcOutputFileName LOCAL lcNext_Bak, I - lcNext_Bak = '' + lcNext_Bak = '.BAK' - FOR I = 0 TO 9 + FOR I = 0 TO THIS.n_ExtraBackupLevels IF I = 0 IF NOT FILE( tcOutputFileName + '.BAK' ) lcNext_Bak = '.BAK' @@ -1138,8 +1184,6 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM ENDIF ENDFOR - lcNext_Bak = EVL( lcNext_Bak, '.X.BAK' ) && Para que no quede nunca vacío - RETURN lcNext_Bak ENDPROC diff --git a/foxbin2prg_en.h b/foxbin2prg_en.h index a942b68..2eff952 100644 --- a/foxbin2prg_en.h +++ b/foxbin2prg_en.h @@ -1,45 +1,46 @@ *------------------------------------------------------------------------------------------------------------------------------------------- *-- ENGLISH TRANSLATION => RENAME OR COPY TO [foxbin2prg.h] TO USE, AND RECOMPILE FOXBIN2PRG.PRG - Feel free to change or adapt the strings. +*-- NOTE: MUST USE DOUBLE QUOTES, OR SYNTAX ERRORS HAPPEN WHEN COMPILING. STRANGE :( *------------------------------------------------------------------------------------------------------------------------------------------- -#DEFINE C_ASTERISK_EXT_NOT_ALLOWED_LOC '* and ? extensions are not allowed because is dangerous (binaries can be overwriten with xx2 empty files)' -#DEFINE C_BACKLINK_CANT_UPDATE_BL_LOC 'Could not update backlink' -#DEFINE C_BACKLINK_OF_TABLE_LOC 'of table' -#DEFINE C_BACKUP_OF_LOC 'Backup of: ' -#DEFINE C_CANT_GENERATE_FILE_BECAUSE_IT_IS_READONLY_LOC 'Can't generate file [<>] because it is ReadOnly' -#DEFINE C_CONFIGFILE_LOC 'ConfigFile:' -#DEFINE C_CONVERTER_UNLOAD_LOC 'Converter unload' -#DEFINE C_CONVERTING_FILE_LOC 'Converting file' -#DEFINE C_DATA_ERROR_CANT_PARSE_UNPAIRING_DOUBLE_QUOTES_LOC 'Data Error: Cant't parse because unpairing double-quotes on line <>' -#DEFINE C_DUPLICATED_FILE_LOC 'Duplicated file' -#DEFINE C_ENDDEFINE_MARKER_NOT_FOUND_LOC 'No se ha encontrado el marcador de fin [ENDDEFINE] de la línea <> para el identificador [<>]' -#DEFINE C_END_MARKER_NOT_FOUND_LOC 'Can't found end marker [<>] that closes start marker [<>] on line <>' -#DEFINE C_FIELD_NOT_FOUND_ON_FILE_STRUCTURE_LOC 'Field [<>] not found on structure of file <>' -#DEFINE C_FILE_DOESNT_EXIST_LOC 'File doesn't exist:' -#DEFINE C_FILE_NAME_IS_NOT_SUPPORTED_LOC 'File [<<.c_InputFile>>] is not supported' -#DEFINE C_FILE_NOT_FOUND_LOC 'File not found' -#DEFINE C_EXTENSION_RECONFIGURATION_LOC 'Extension Reconfiguration:' -#DEFINE C_FOXBIN2PRG_ERROR_CAPTION_LOC 'FOXBIN2PRG: ERROR!!' -#DEFINE C_FOXBIN2PRG_INFO_SINTAX_LOC 'FOXBIN2PRG: SINTAXIS INFO' -#DEFINE C_FOXBIN2PRG_INFO_SINTAX_EXAMPLE_LOC 'FOXBIN2PRG [cType_NA cTextName_NA cGenText_NA cDontShowErrors cDebug cDontShowProgress cOriginalFileName cRecompile]' + CR_LF + CR_LF ; - + 'Example to generate TXT of all VCX of "c:\desa\clases", without showing error window and generating LOG file: ' + CR_LF ; - + ' FOXBIN2PRG "c:\desa\clases\*.vcx" "0" "0" "0" "1" "1"' + CR_LF + CR_LF ; - + 'Example to generate TXT of all VCX of "c:\desa\clases", without showing error window and without LOG file: ' + CR_LF ; - + ' FOXBIN2PRG "c:\desa\clases\*.vc2" "0" "0" "0" "1" "0"' -#DEFINE C_FOXBIN2PRG_JUST_VFP_9_LOC 'FOXBIN2PRG is only for Visual FoxPro 9.0!' -#DEFINE C_FOXBIN2PRG_WARN_CAPTION_LOC 'FOXBIN2PRG: WARNING!' -#DEFINE C_MENU_NOT_IN_VFP9_FORMAT_LOC 'Menu [<>] is NOT VFP 9 Format! - Please convert to VFP 9 with MODIFY MENU <>' -#DEFINE C_OBJECT_NAME_WITHOUT_OBJECT_OREG_LOC 'Object [<>] does not contain oReg object (level <>)' -#DEFINE C_NAMES_CAPITALIZATION_PROGRAM_FOUND_LOC '* Names capitalization program [<>] found' -#DEFINE C_NAMES_CAPITALIZATION_PROGRAM_NOT_FOUND_LOC '* Names capitalization program [<>] not found' -#DEFINE C_ONLY_SETNAME_AND_GETNAME_RECOGNIZED_LOC 'Operation not recognized. Only SETNAME and GETNAME allowed.' -#DEFINE C_OUTPUT_FILE_IS_NOT_OVERWRITEN_LOC 'Optimization: Output file [<>] is not overwriten because it is the same as the genereted.' -#DEFINE C_PROCEDURE_NOT_CLOSED_ON_LINE_LOC 'Procedure not closed. Last line of code must be ENDPROC. [<>]' -#DEFINE C_PROCESSING_LOC 'Processing file' -#DEFINE C_PROCESS_PROGRESS_LOC 'Process Progress:' -#DEFINE C_PROPERTY_NAME_NOT_RECOGNIZED_LOC 'Property [<>] is not recognized.' -#DEFINE C_REQUESTING_CAPITALIZATION_OF_FILE_LOC '- Requesting capitalization of file [<>]' -#DEFINE C_SOURCEFILE_LOC 'Source file: ' -#DEFINE C_STRUCTURE_NESTING_ERROR_ENDPROC_EXPECTED_LOC 'Nesting structure error. ENDPROC expected but found ENDDEFINE on class <> (<>), line <> of file <>' -#DEFINE C_STRUCTURE_NESTING_ERROR_ENDPROC_EXPECTED_LOC 'Nesting structure error. ENDPROC expected but found ENDDEFINE on class <> (<>.<>), line <> of file <>' -#DEFINE C_UNKNOWN_CLASS_NAME_LOC 'Unknown class [<>]' -#DEFINE 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)' +#DEFINE C_ASTERISK_EXT_NOT_ALLOWED_LOC "* and ? extensions are not allowed because is dangerous (binaries can be overwriten with xx2 empty files)" +#DEFINE C_BACKLINK_CANT_UPDATE_BL_LOC "Could not update backlink" +#DEFINE C_BACKLINK_OF_TABLE_LOC "of table" +#DEFINE C_BACKUP_OF_LOC "Doing Backup of: " +#DEFINE C_CANT_GENERATE_FILE_BECAUSE_IT_IS_READONLY_LOC "Can not generate file [<>] because it is ReadOnly" +#DEFINE C_CONFIGFILE_LOC "Using configuration file:" +#DEFINE C_CONVERTER_UNLOAD_LOC "Converter unload" +#DEFINE C_CONVERTING_FILE_LOC "Converting file" +#DEFINE C_DATA_ERROR_CANT_PARSE_UNPAIRING_DOUBLE_QUOTES_LOC "Data Error: Cant't parse because unpairing double-quotes on line <>" +#DEFINE C_DUPLICATED_FILE_LOC "Duplicated file" +#DEFINE C_ENDDEFINE_MARKER_NOT_FOUND_LOC "No se ha encontrado el marcador de fin [ENDDEFINE] de la línea <> para el identificador [<>]" +#DEFINE C_END_MARKER_NOT_FOUND_LOC "Can not found end marker [<>] that closes start marker [<>] on line <>" +#DEFINE C_FIELD_NOT_FOUND_ON_FILE_STRUCTURE_LOC "Field [<>] not found on structure of file <>" +#DEFINE C_FILE_DOESNT_EXIST_LOC 'File does not exist:' +#DEFINE C_FILE_NAME_IS_NOT_SUPPORTED_LOC "File [<<.c_InputFile>>] is not supported" +#DEFINE C_FILE_NOT_FOUND_LOC "File not found" +#DEFINE C_EXTENSION_RECONFIGURATION_LOC "Extension Reconfiguration:" +#DEFINE C_FOXBIN2PRG_ERROR_CAPTION_LOC "FOXBIN2PRG: ERROR!!" +#DEFINE C_FOXBIN2PRG_INFO_SINTAX_LOC "FOXBIN2PRG: SYNTAX INFO" +#DEFINE C_FOXBIN2PRG_INFO_SINTAX_EXAMPLE_LOC "FOXBIN2PRG [,cType ,cTextName ,cGenText ,cNoMostrarErrores ,cDebug, cDontShowProgress, cOriginalFileName, cRecompile, cNoTimestamps]" + CR_LF + CR_LF ; + + "Example to generate TXT of all VCX of 'c:\desa\clases', without showing error window and generating LOG file: " + CR_LF ; + + " FOXBIN2PRG 'c:\desa\clases\*.vcx' '0' '0' '0' '1' '1'" + CR_LF + CR_LF ; + + "Example to generate TXT of all VCX of 'c:\desa\clases', without showing error window and without LOG file: " + CR_LF ; + + " FOXBIN2PRG 'c:\desa\clases\*.vc2' '0' '0' '0' '1' '0'" +#DEFINE C_FOXBIN2PRG_JUST_VFP_9_LOC "FOXBIN2PRG is only for Visual FoxPro 9.0!" +#DEFINE C_FOXBIN2PRG_WARN_CAPTION_LOC "FOXBIN2PRG: WARNING!" +#DEFINE C_MENU_NOT_IN_VFP9_FORMAT_LOC "Menu [<>] is NOT VFP 9 Format! - Please convert to VFP 9 with MODIFY MENU <>" +#DEFINE C_OBJECT_NAME_WITHOUT_OBJECT_OREG_LOC "Object [<>] does not contain oReg object (level <>)" +#DEFINE C_NAMES_CAPITALIZATION_PROGRAM_FOUND_LOC "* Names capitalization program [<>] found" +#DEFINE C_NAMES_CAPITALIZATION_PROGRAM_NOT_FOUND_LOC "* Names capitalization program [<>] not found" +#DEFINE C_ONLY_SETNAME_AND_GETNAME_RECOGNIZED_LOC "Operation not recognized. Only SETNAME and GETNAME allowed." +#DEFINE C_OUTPUT_FILE_IS_NOT_OVERWRITEN_LOC "Optimization: Output file [<>] is not overwriten because it is the same as the genereted." +#DEFINE C_PROCEDURE_NOT_CLOSED_ON_LINE_LOC "Procedure not closed. Last line of code must be ENDPROC. [<>]" +#DEFINE C_PROCESSING_LOC "Processing file" +#DEFINE C_PROCESS_PROGRESS_LOC "Process Progress:" +#DEFINE C_PROPERTY_NAME_NOT_RECOGNIZED_LOC "Property [<>] is not recognized." +#DEFINE C_REQUESTING_CAPITALIZATION_OF_FILE_LOC "- Requesting capitalization of file [<>]" +#DEFINE C_SOURCEFILE_LOC "Source file: " +#DEFINE C_STRUCTURE_NESTING_ERROR_ENDPROC_EXPECTED_LOC "Nesting structure error. ENDPROC expected but found ENDDEFINE on class <> (<>), line <> of file <>" +#DEFINE C_STRUCTURE_NESTING_ERROR_ENDPROC_EXPECTED_2_LOC "Nesting structure error. ENDPROC expected but found ENDDEFINE on class <> (<>.<>), line <> of file <>" +#DEFINE C_UNKNOWN_CLASS_NAME_LOC "Unknown class [<>]" +#DEFINE 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)"