From 3a14c2ff8473efefb8b12e3cc386484c3f92fc46 Mon Sep 17 00:00:00 2001 From: fernando Date: Thu, 30 Jan 2014 20:46:37 +0100 Subject: [PATCH] Changeset: 148 v1.19.5 - Agregado soporte para SourceSafe (Diff y Merge) --- foxbin2prg.pj2 | 4 +- foxbin2prg.pjt | Bin 340224 -> 340352 bytes foxbin2prg.pjx | Bin 1583 -> 1583 bytes foxbin2prg.prg | 188 +++++++++++++++++++++++++----------------------- foxbin2prg_en.h | 45 ++++++++++++ 5 files changed, 147 insertions(+), 90 deletions(-) create mode 100644 foxbin2prg_en.h diff --git a/foxbin2prg.pj2 b/foxbin2prg.pj2 index 796e859..7449a10 100644 --- a/foxbin2prg.pj2 +++ b/foxbin2prg.pj2 @@ -26,7 +26,7 @@ _LegalTrademark = "Open Source" _ProductName = " FOXBIN2PRG" _MajorVer = "1" _MinorVer = "19" -_Revision = " 214" +_Revision = " 216" _LanguageID = "1034" _AutoIncrement = "1" * @@ -51,7 +51,7 @@ 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="1144882531" ID="1130644423" ObjRev="544" /> + .ADD('foxbin2prg.prg') && *< FileMetadata: Type="P" Cpid="1252" Timestamp="1144955831" ID="1130644423" ObjRev="544" /> * .ITEM('__newproject.f2b').Remove() diff --git a/foxbin2prg.pjt b/foxbin2prg.pjt index a503c6a661075ff2b934cb4eb9941cfe4419d835..c5cfb3dd46a06a8da8724d98a40b83828d112771 100644 GIT binary patch delta 14654 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 delta 14101 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 RbT#n*vyJ~}SnSaK{{RDE@0S1o diff --git a/foxbin2prg.pjx b/foxbin2prg.pjx index 985da2f6cf5139200ad75ed6097192acbe067483..f5cba3eb3c47eb95f7436216844340281b1e9c77 100644 GIT binary patch delta 31 jcmZ3_vz~{=fR9mbBg+mJ7E4o8i^T_67{QFmM_97~eNYHC delta 31 jcmZ3_vz~{=fR9mjBg+mJ77Gg_)5Ql^7{QFmM_97~eC-G= diff --git a/foxbin2prg.prg b/foxbin2prg.prg index 603c14a..cf0cea0 100644 --- a/foxbin2prg.prg +++ b/foxbin2prg.prg @@ -66,6 +66,7 @@ * 08/01/2014 FDBOZZO v1.19.3 Cambio en los timestamps de los TXT para mantener los valores vacíos que generaban muchísimas diferencias * 22/01/2014 FDBOZZO v1.19.4 Nuevo parámetro Recompile para forzar la recompilación. Ahora por defecto el binario no se recompila para ganar velocidad y evitar errores. Debe recompilar manualmente. * 22/01/2014 FDBOZZO v1.19.4 DBC: Agregado soporte para comentarios multilínea (propiedad Comment) +* 30/01/2014 FDBOZZO v1.19.5 Agregada compatibilidad con SourceSafe para Diff y Merge * * *--------------------------------------------------------------------------------------------------- @@ -279,7 +280,7 @@ LPARAMETERS tc_InputFile, tcType, tcTextName, tlGenText, tcDontShowErrors, tcDeb #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_FOXBIN2PRG_CFG_EXTENSION_LOC 'extension:' + #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 ; @@ -308,25 +309,36 @@ LPARAMETERS tc_InputFile, tcType, tcTextName, tlGenText, tcDontShowErrors, tcDeb #ENDIF ******************************************************************************************************************* - -PUBLIC goCnv AS c_foxbin2prg OF 'FOXBIN2PRG.PRG' +LOCAL loCnv AS c_foxbin2prg OF 'FOXBIN2PRG.PRG' LOCAL lnResp, loEx as Exception -goCnv = CREATEOBJECT("c_foxbin2prg") + +*SYS(2030,1) +*SYS(2335,0) +*IF PCOUNT() > 1 +* SET STEP ON +*ENDIF +loCnv = CREATEOBJECT("c_foxbin2prg") loEx = NULL -lnResp = goCnv.ejecutar( tc_InputFile, tcType, tcTextName, tlGenText, tcDontShowErrors, tcDebug ; +lnResp = loCnv.ejecutar( tc_InputFile, tcType, tcTextName, tlGenText, tcDontShowErrors, tcDebug ; , '', NULL, @loEx, .F., tcOriginalFileName, tcRecompile ) ADDPROPERTY(_SCREEN, 'ExitCode', lnResp) -IF _VFP.STARTMODE <= 1 - RETURN lnResp -ENDIF +*IF _VFP.STARTMODE <= 1 +* RETURN lnResp +*ENDIF *-- Muy útil para procesos batch que capturan el código de error -IF NOT EMPTY(lnResp) AND VARTYPE(loEx) = "O" +IF _VFP.STARTMODE > 1 AND NOT EMPTY(lnResp) AND VARTYPE(loEx) = "O" DECLARE ExitProcess IN Win32API INTEGER ExitCode ExitProcess(1) ENDIF +loEx = NULL +loCnv = NULL +RELEASE loEx, loCnv + +SET COVERAGE TO +RETURN lnResp QUIT @@ -489,6 +501,9 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM IF '+D' $ tcAttrib dwFileAttributes = BITOR(dwFileAttributes, FILE_ATTRIBUTE_DIRECTORY) ENDIF + IF '+N' $ tcAttrib + dwFileAttributes = BITOR(dwFileAttributes, FILE_ATTRIBUTE_NORMAL) + ENDIF IF '+T' $ tcAttrib dwFileAttributes = BITOR(dwFileAttributes, FILE_ATTRIBUTE_TEMPORARY) ENDIF @@ -511,6 +526,9 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM IF '-D' $ tcAttrib AND BITAND(dwFileAttributes, FILE_ATTRIBUTE_DIRECTORY) = FILE_ATTRIBUTE_DIRECTORY dwFileAttributes = dwFileAttributes - FILE_ATTRIBUTE_DIRECTORY ENDIF + IF '-N' $ tcAttrib AND BITAND(dwFileAttributes, FILE_ATTRIBUTE_NORMAL) = FILE_ATTRIBUTE_NORMAL + dwFileAttributes = dwFileAttributes - FILE_ATTRIBUTE_NORMAL + ENDIF IF '-T' $ tcAttrib AND BITAND(dwFileAttributes, FILE_ATTRIBUTE_TEMPORARY) = FILE_ATTRIBUTE_TEMPORARY dwFileAttributes = dwFileAttributes - FILE_ATTRIBUTE_TEMPORARY ENDIF @@ -667,18 +685,18 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM TRY LOCAL I, lcPath, lnCodError, lcFileSpec, lcFile, laFiles(1,5), laConfig(1), lcConfigFile, lcExt ; - , llExisteConfig, lcConfData, lnFileCount ; + , llExisteConfig, lcConfData, lnFileCount, lcErrorInfo ; , loEx AS EXCEPTION ; , loFSO AS Scripting.FileSystemObject lnCodError = 0 - SET DELETED ON - SET DATE YMD - SET HOURS TO 24 - SET CENTURY ON - SET SAFETY OFF - SET TABLEPROMPT OFF + *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 @@ -714,11 +732,13 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM IF llExisteConfig FOR I = 1 TO ALINES( laConfig, FILETOSTR( lcConfigFile ), 1+4 ) - IF LOWER( LEFT( laConfig(I), 10 ) ) == C_FOXBIN2PRG_CFG_EXTENSION_LOC && 'extension:' + 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 @@ -787,60 +807,13 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM CASE tc_InputFile $ 'KBMRV' && SCX, LBX, MNX, FRX, VCX lnCodError = 2 OTHERWISE - lnCodError = 0 + lnCodError = -1 ENDCASE ELSE - IF NOT EMPTY(tcType) AND NOT EMPTY(tcTextName) - *-- Compatibilidad con SourceSafe - lcExt = JUSTEXT(tc_InputFile) - - IF tlGenText - *-- Create a textfile from binary - DO CASE - CASE lcExt_1 = 'PJX' - tc_InputFile = FORCEEXT(tc_InputFile, LOWER(THIS.c_PJ2)) - CASE lcExt_1 = 'VCX' - tc_InputFile = FORCEEXT(tc_InputFile, LOWER(THIS.c_VC2)) - CASE lcExt_1 = 'SCX' - tc_InputFile = FORCEEXT(tc_InputFile, LOWER(THIS.c_SC2)) - CASE lcExt_1 = 'FRX' - tc_InputFile = FORCEEXT(tc_InputFile, LOWER(THIS.c_FR2)) - CASE lcExt_1 = 'LBX' - tc_InputFile = FORCEEXT(tc_InputFile, LOWER(THIS.c_LB2)) - CASE lcExt_1 = 'DBF' - tc_InputFile = FORCEEXT(tc_InputFile, LOWER(THIS.c_DB2)) - CASE lcExt_1 = 'DBC' - tc_InputFile = FORCEEXT(tc_InputFile, LOWER(THIS.c_DC2)) - CASE lcExt_1 = 'MNX' - tc_InputFile = FORCEEXT(tc_InputFile, LOWER(THIS.c_MN2)) - ENDCASE - - ELSE - *-- Create a binary from textfile - DO CASE - CASE lcExt_1 = THIS.c_PJ2 - tc_InputFile = FORCEEXT(tc_InputFile, 'pjx') - CASE lcExt_1 = THIS.c_VC2 - tc_InputFile = FORCEEXT(tc_InputFile, 'vcx') - CASE lcExt_1 = THIS.c_SC2 - tc_InputFile = FORCEEXT(tc_InputFile, 'scx') - CASE lcExt_1 = THIS.c_FR2 - tc_InputFile = FORCEEXT(tc_InputFile, 'frx') - CASE lcExt_1 = THIS.c_LB2 - tc_InputFile = FORCEEXT(tc_InputFile, 'lbx') - CASE lcExt_1 = THIS.c_DB2 - tc_InputFile = FORCEEXT(tc_InputFile, 'dbf') - CASE lcExt_1 = THIS.c_DC2 - tc_InputFile = FORCEEXT(tc_InputFile, 'dbc') - CASE lcExt_1 = THIS.c_MN2 - tc_InputFile = FORCEEXT(tc_InputFile, 'mnx') - ENDCASE - - ENDIF - ENDIF IF FILE(tc_InputFile) + ERASE ( tc_InputFile + '.ERR' ) IF THIS.l_Recompile AND LEN(tcRecompile) > 3 AND DIRECTORY(tcRecompile) CD (tcRecompile) @@ -850,6 +823,19 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM THIS.c_LogFile = tc_InputFile + '.LOG' + IF 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 se debe regenerar el binario (tlGenText=.F.) se debe usar como + *-- archivo de entrada tcTextName en su lugar. Aquí los intercambio. + tc_InputFile = tcTextName + ENDIF + ENDIF + IF THIS.l_Debug IF FILE( THIS.c_LogFile ) ERASE ( THIS.c_LogFile ) @@ -857,7 +843,7 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM THIS.writeLog( THIS.c_Foxbin2prg_FullPath + ' - FileSpec: ' + EVL(tc_InputFile,'') ) ENDIF - lnCodError = THIS.Convertir( tc_InputFile, toModulo, toEx, tlRelanzarError, tcOriginalFileName ) + lnCodError = THIS.Convertir( tc_InputFile, toModulo, toEx, .T., tcOriginalFileName ) ENDIF ENDIF ENDCASE @@ -866,11 +852,22 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM CATCH TO toEx lnCodError = toEx.ErrorNo + lcErrorInfo = THIS.Exception2Str(toEx) + CR_LF + CR_LF + C_SOURCEFILE_LOC + THIS.c_InputFile ADDPROPERTY(_SCREEN, 'ExitCode', toEx.ERRORNO) - IF llExisteConfig - THIS.writeLog( 'ERROR: ' + TRANSFORM(toEx.ERRORNO) + ', ' + toEx.MESSAGE + CR_LF ; - + toEx.PROCEDURE + ', line ' + TRANSFORM(toEx.LINENO) + CR_LF ; - + toEx.DETAILS ) + + TRY + STRTOFILE( lcErrorInfo, EVL(tc_InputFile,'foxbin2prg') + '.ERR' ) + CATCH TO loEx2 + ENDTRY + + IF THIS.l_Debug + IF _VFP.STARTMODE = 0 + SET STEP ON + ENDIF + THIS.writeLog( lcErrorInfo ) + ENDIF + IF THIS.l_Debug AND THIS.l_ShowErrors + MESSAGEBOX( lcErrorInfo, 0+16+4096, C_FOXBIN2PRG_ERROR_CAPTION_LOC, 60000 ) ENDIF IF tlRelanzarError THROW @@ -935,83 +932,103 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM ERROR C_FILE_DOESNT_EXIST_LOC + ' [' + .c_InputFile + ']' ENDIF - IF FILE( .c_InputFile + '.ERR' ) - TRY - ERASE ( .c_InputFile + '.ERR' ) - CATCH - ENDTRY - ENDIF - lcExtension = UPPER( JUSTEXT(.c_InputFile) ) DO CASE CASE lcExtension = 'VCX' .c_OutputFile = FORCEEXT( .c_InputFile, .c_VC2 ) .o_Conversor = CREATEOBJECT( 'c_conversor_vcx_a_prg' ) + .ChangeFileAttribute( FORCEEXT( .c_InputFile, .c_VC2 ), '+N' ) CASE lcExtension = 'SCX' .c_OutputFile = FORCEEXT( .c_InputFile, .c_SC2 ) .o_Conversor = CREATEOBJECT( 'c_conversor_scx_a_prg' ) + .ChangeFileAttribute( FORCEEXT( .c_InputFile, .c_SC2 ), '+N' ) CASE lcExtension = 'PJX' .c_OutputFile = FORCEEXT( .c_InputFile, .c_PJ2 ) .o_Conversor = CREATEOBJECT( 'c_conversor_pjx_a_prg' ) + .ChangeFileAttribute( FORCEEXT( .c_InputFile, .c_PJ2 ), '+N' ) CASE lcExtension = 'PJM' .c_OutputFile = FORCEEXT( .c_InputFile, .c_PJ2 ) .o_Conversor = CREATEOBJECT( 'c_conversor_pjm_a_prg' ) + .ChangeFileAttribute( FORCEEXT( .c_InputFile, .c_PJ2 ), '+N' ) CASE lcExtension = 'FRX' .c_OutputFile = FORCEEXT( .c_InputFile, .c_FR2 ) .o_Conversor = CREATEOBJECT( 'c_conversor_frx_a_prg' ) + .ChangeFileAttribute( FORCEEXT( .c_InputFile, .c_FR2 ), '+N' ) CASE lcExtension = 'LBX' .c_OutputFile = FORCEEXT( .c_InputFile, .c_LB2 ) .o_Conversor = CREATEOBJECT( 'c_conversor_frx_a_prg' ) + .ChangeFileAttribute( FORCEEXT( .c_InputFile, .c_LB2 ), '+N' ) CASE lcExtension = 'DBF' .c_OutputFile = FORCEEXT( .c_InputFile, .c_DB2 ) .o_Conversor = CREATEOBJECT( 'c_conversor_dbf_a_prg' ) + .ChangeFileAttribute( FORCEEXT( .c_InputFile, .c_DB2 ), '+N' ) CASE lcExtension = 'DBC' .c_OutputFile = FORCEEXT( .c_InputFile, .c_DC2 ) .o_Conversor = CREATEOBJECT( 'c_conversor_dbc_a_prg' ) + .ChangeFileAttribute( FORCEEXT( .c_InputFile, .c_DC2 ), '+N' ) CASE lcExtension = 'MNX' .c_OutputFile = FORCEEXT( .c_InputFile, .c_MN2 ) .o_Conversor = CREATEOBJECT( 'c_conversor_mnx_a_prg' ) + .ChangeFileAttribute( FORCEEXT( .c_InputFile, .c_MN2 ), '+N' ) CASE lcExtension = .c_VC2 .c_OutputFile = FORCEEXT( .c_InputFile, 'VCX' ) .o_Conversor = CREATEOBJECT( 'c_conversor_prg_a_vcx' ) + .ChangeFileAttribute( FORCEEXT( .c_InputFile, 'VCX' ), '+N' ) + .ChangeFileAttribute( FORCEEXT( .c_InputFile, 'VCT' ), '+N' ) CASE lcExtension = .c_SC2 .c_OutputFile = FORCEEXT( .c_InputFile, 'SCX' ) .o_Conversor = CREATEOBJECT( 'c_conversor_prg_a_scx' ) + .ChangeFileAttribute( FORCEEXT( .c_InputFile, 'SCX' ), '+N' ) + .ChangeFileAttribute( FORCEEXT( .c_InputFile, 'SCT' ), '+N' ) CASE lcExtension = .c_PJ2 .c_OutputFile = FORCEEXT( .c_InputFile, 'PJX' ) .o_Conversor = CREATEOBJECT( 'c_conversor_prg_a_pjx' ) + .ChangeFileAttribute( FORCEEXT( .c_InputFile, 'PJX' ), '+N' ) + .ChangeFileAttribute( FORCEEXT( .c_InputFile, 'PJT' ), '+N' ) CASE lcExtension = .c_FR2 .c_OutputFile = FORCEEXT( .c_InputFile, 'FRX' ) .o_Conversor = CREATEOBJECT( 'c_conversor_prg_a_frx' ) + .ChangeFileAttribute( FORCEEXT( .c_InputFile, 'FRX' ), '+N' ) + .ChangeFileAttribute( FORCEEXT( .c_InputFile, 'FRT' ), '+N' ) CASE lcExtension = .c_LB2 .c_OutputFile = FORCEEXT( .c_InputFile, 'LBX' ) .o_Conversor = CREATEOBJECT( 'c_conversor_prg_a_frx' ) + .ChangeFileAttribute( FORCEEXT( .c_InputFile, 'LBX' ), '+N' ) + .ChangeFileAttribute( FORCEEXT( .c_InputFile, 'LBT' ), '+N' ) CASE lcExtension = .c_DB2 .c_OutputFile = FORCEEXT( .c_InputFile, 'DBF' ) .o_Conversor = CREATEOBJECT( 'c_conversor_prg_a_dbf' ) + .ChangeFileAttribute( FORCEEXT( .c_InputFile, 'DBF' ), '+N' ) + .ChangeFileAttribute( FORCEEXT( .c_InputFile, 'FPT' ), '+N' ) + .ChangeFileAttribute( FORCEEXT( .c_InputFile, 'CDX' ), '+N' ) CASE lcExtension = .c_DC2 .c_OutputFile = FORCEEXT( .c_InputFile, 'DBC' ) .o_Conversor = CREATEOBJECT( 'c_conversor_prg_a_dbc' ) + .ChangeFileAttribute( FORCEEXT( .c_InputFile, 'DBC' ), '+N' ) + .ChangeFileAttribute( FORCEEXT( .c_InputFile, 'DCX' ), '+N' ) + .ChangeFileAttribute( FORCEEXT( .c_InputFile, 'DCT' ), '+N' ) CASE lcExtension = .c_MN2 .c_OutputFile = FORCEEXT( .c_InputFile, 'MNX' ) .o_Conversor = CREATEOBJECT( 'c_conversor_prg_a_mnx' ) + .ChangeFileAttribute( FORCEEXT( .c_InputFile, 'MNX' ), '+N' ) + .ChangeFileAttribute( FORCEEXT( .c_InputFile, 'MNT' ), '+N' ) OTHERWISE *ERROR 'El archivo [' + .c_InputFile + '] no está soportado' @@ -1041,20 +1058,15 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM lnCodError = toEx.ERRORNO lcErrorInfo = THIS.Exception2Str(toEx) + CR_LF + CR_LF + C_SOURCEFILE_LOC + THIS.c_InputFile - TRY - STRTOFILE( lcErrorInfo, THIS.c_InputFile + '.ERR' ) - CATCH TO loEx2 - ENDTRY - IF THIS.l_Debug IF _VFP.STARTMODE = 0 SET STEP ON ENDIF - THIS.writeLog( lcErrorInfo ) - ENDIF - IF THIS.l_Debug AND THIS.l_ShowErrors - MESSAGEBOX( lcErrorInfo, 0+16+4096, C_FOXBIN2PRG_ERROR_CAPTION_LOC, 60000 ) + *THIS.writeLog( lcErrorInfo ) ENDIF + *IF THIS.l_Debug AND THIS.l_ShowErrors + * MESSAGEBOX( lcErrorInfo, 0+16+4096, C_FOXBIN2PRG_ERROR_CAPTION_LOC, 60000 ) + *ENDIF IF tlRelanzarError && Usado en Unit Testing THROW ENDIF @@ -1183,7 +1195,7 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM LOCAL lcLog, laFile(1,5) *THIS.writeLog( '- Se ha solicitado capitalizar el archivo [' + tcFileName + ']' ) THIS.writeLog( TEXTMERGE(C_REQUESTING_CAPITALIZATION_OF_FILE_LOC) ) - THIS.ChangeFileAttribute( tcFileName, '-R' ) + THIS.ChangeFileAttribute( tcFileName, '+N' ) lcLog = '' DO (tcEXE_CAPS) WITH tcFileName, '', 'F', lcLog, .T. THIS.writeLog( lcLog ) diff --git a/foxbin2prg_en.h b/foxbin2prg_en.h new file mode 100644 index 0000000..a942b68 --- /dev/null +++ b/foxbin2prg_en.h @@ -0,0 +1,45 @@ +*------------------------------------------------------------------------------------------------------------------------------------------- +*-- ENGLISH TRANSLATION => RENAME OR COPY TO [foxbin2prg.h] TO USE, AND RECOMPILE FOXBIN2PRG.PRG - Feel free to change or adapt the strings. +*------------------------------------------------------------------------------------------------------------------------------------------- +#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)'