From d7744c3c721984a5ea1821b9bad2b24a4a87a849 Mon Sep 17 00:00:00 2001 From: fernando Date: Wed, 29 Jan 2014 19:08:24 +0100 Subject: [PATCH] Changeset: 147 v1.19.6 - Mejorado el soporte para SourceSafe (SCCAPI) --- foxbin2prg.pj2 | 4 +- foxbin2prg.pjt | Bin 337408 -> 340224 bytes foxbin2prg.pjx | Bin 1583 -> 1583 bytes foxbin2prg.prg | 231 +++++++++++++++++++++++++++++++++++++++++-------- 4 files changed, 197 insertions(+), 38 deletions(-) diff --git a/foxbin2prg.pj2 b/foxbin2prg.pj2 index 8a9caae..796e859 100644 --- a/foxbin2prg.pj2 +++ b/foxbin2prg.pj2 @@ -26,7 +26,7 @@ _LegalTrademark = "Open Source" _ProductName = " FOXBIN2PRG" _MajorVer = "1" _MinorVer = "19" -_Revision = " 210" +_Revision = " 214" _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="1144682071" ID="1130644423" ObjRev="544" /> + .ADD('foxbin2prg.prg') && *< FileMetadata: Type="P" Cpid="1252" Timestamp="1144882531" ID="1130644423" ObjRev="544" /> * .ITEM('__newproject.f2b').Remove() diff --git a/foxbin2prg.pjt b/foxbin2prg.pjt index f205034dac689633653258103eb9cc20e9fcd3f6..a503c6a661075ff2b934cb4eb9941cfe4419d835 100644 GIT binary patch delta 17417 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 z%0A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 L@IN;5TweM=pJ(3~ delta 14428 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 U`P+@uwhrQ-{E7d<=DUUcKO`r^C;$Ke diff --git a/foxbin2prg.pjx b/foxbin2prg.pjx index e17e388ca22b48e7f46c06ec90e2b33e83695a61..985da2f6cf5139200ad75ed6097192acbe067483 100644 GIT binary patch delta 73 zcmZ3_vz~{=fR9mjBg+mJHVX?QQ)AP~hgkmUfSHC2P~aA#px~we1g0h?AR%WUo&>}| MzNw|<^CZ05;SPKL7v# diff --git a/foxbin2prg.prg b/foxbin2prg.prg index eea25b7..603c14a 100644 --- a/foxbin2prg.prg +++ b/foxbin2prg.prg @@ -94,9 +94,9 @@ *--------------------------------------------------------------------------------------------------- * PARÁMETROS: (!=Obligatorio | ?=Opcional) (@=Pasar por referencia | v=Pasar por valor) (IN/OUT) * tc_InputFile (v! IN ) Nombre completo (fullpath) del archivo a convertir -* tcType_na ( ) Por ahora se mantiene por compatibilidad con SCCTEXT.PRG -* tcTextName_na ( ) Por ahora se mantiene por compatibilidad con SCCTEXT.PRG -* tlGenText_na ( ) Por ahora se mantiene por compatibilidad con SCCTEXT.PRG +* tcType ( ) Por ahora se mantiene por compatibilidad con SCCTEXT.PRG +* tcTextName ( ) Por ahora se mantiene por compatibilidad con SCCTEXT.PRG +* tlGenText ( ) Por ahora se mantiene por compatibilidad con SCCTEXT.PRG * tcDontShowErrors (v? IN ) '1' para NO mostrar errores con MESSAGEBOX * tcDebug (v? IN ) '1' para depurar en el sitio donde ocurre el error (solo modo desarrollo) * tcDontShowProgress (v? IN ) '1' para NO mostrar la ventana de progreso @@ -110,7 +110,7 @@ * * Ej: DO FOXBIN2PRG.PRG WITH "C:\DESA\INTEGRACION\LIBRERIA.VCX" *--------------------------------------------------------------------------------------------------- -LPARAMETERS tc_InputFile, tcType_na, tcTextName_na, tlGenText_na, tcDontShowErrors, tcDebug, tcDontShowProgress, tcOriginalFileName, tcRecompile +LPARAMETERS tc_InputFile, tcType, tcTextName, tlGenText, tcDontShowErrors, tcDebug, tcDontShowProgress, tcOriginalFileName, tcRecompile *-- Internacionalización / Internationalization *-- Fin / End @@ -310,10 +310,11 @@ LPARAMETERS tc_InputFile, tcType_na, tcTextName_na, tlGenText_na, tcDontShowErro PUBLIC goCnv AS c_foxbin2prg OF 'FOXBIN2PRG.PRG' -LOCAL lnResp +LOCAL lnResp, loEx as Exception goCnv = CREATEOBJECT("c_foxbin2prg") -lnResp = goCnv.ejecutar( tc_InputFile, tcType_na, tcTextName_na, tlGenText_na, tcDontShowErrors, tcDebug ; - , '', NULL, NULL, .F., tcOriginalFileName, tcRecompile ) +loEx = NULL +lnResp = goCnv.ejecutar( tc_InputFile, tcType, tcTextName, tlGenText, tcDontShowErrors, tcDebug ; + , '', NULL, @loEx, .F., tcOriginalFileName, tcRecompile ) ADDPROPERTY(_SCREEN, 'ExitCode', lnResp) IF _VFP.STARTMODE <= 1 @@ -321,8 +322,8 @@ IF _VFP.STARTMODE <= 1 ENDIF *-- Muy útil para procesos batch que capturan el código de error -DECLARE ExitProcess IN Win32API INTEGER ExitCode -IF NOT EMPTY(lnResp) +IF NOT EMPTY(lnResp) AND VARTYPE(loEx) = "O" + DECLARE ExitProcess IN Win32API INTEGER ExitCode ExitProcess(1) ENDIF @@ -352,6 +353,7 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM + [] ; + [] ; + [] ; + + [] ; + [] ; + [] ; + [] ; @@ -444,6 +446,84 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM ENDPROC + PROCEDURE ChangeFileAttribute + * Using Win32 Functions in Visual FoxPro + * example=103 + * Changing file attributes + LPARAMETERS tcFilename, tcAttrib + tcAttrib = UPPER(tcAttrib) + + #DEFINE FILE_ATTRIBUTE_READONLY 1 + #DEFINE FILE_ATTRIBUTE_HIDDEN 2 + #DEFINE FILE_ATTRIBUTE_SYSTEM 4 + #DEFINE FILE_ATTRIBUTE_DIRECTORY 16 + #DEFINE FILE_ATTRIBUTE_ARCHIVE 32 + #DEFINE FILE_ATTRIBUTE_NORMAL 128 + #DEFINE FILE_ATTRIBUTE_TEMPORARY 512 + #DEFINE FILE_ATTRIBUTE_COMPRESSED 2048 + + DECLARE SHORT SetFileAttributes IN kernel32 STRING tcFileName, INTEGER dwFileAttributes + DECLARE INTEGER GetFileAttributes IN kernel32 STRING tcFileName + + * read current attributes for this file + dwFileAttributes = GetFileAttributes(tcFilename) + + IF dwFileAttributes = -1 + * the file does not exist + RETURN + ENDIF + + IF dwFileAttributes > 0 + IF '+R' $ tcAttrib + dwFileAttributes = BITOR(dwFileAttributes, FILE_ATTRIBUTE_READONLY) + ENDIF + IF '+A' $ tcAttrib + dwFileAttributes = BITOR(dwFileAttributes, FILE_ATTRIBUTE_ARCHIVE) + ENDIF + IF '+S' $ tcAttrib + dwFileAttributes = BITOR(dwFileAttributes, FILE_ATTRIBUTE_SYSTEM) + ENDIF + IF '+H' $ tcAttrib + dwFileAttributes = BITOR(dwFileAttributes, FILE_ATTRIBUTE_HIDDEN) + ENDIF + IF '+D' $ tcAttrib + dwFileAttributes = BITOR(dwFileAttributes, FILE_ATTRIBUTE_DIRECTORY) + ENDIF + IF '+T' $ tcAttrib + dwFileAttributes = BITOR(dwFileAttributes, FILE_ATTRIBUTE_TEMPORARY) + ENDIF + IF '+C' $ tcAttrib + dwFileAttributes = BITOR(dwFileAttributes, FILE_ATTRIBUTE_COMPRESSED) + ENDIF + + IF '-R' $ tcAttrib AND BITAND(dwFileAttributes, FILE_ATTRIBUTE_READONLY) = FILE_ATTRIBUTE_READONLY + dwFileAttributes = dwFileAttributes - FILE_ATTRIBUTE_READONLY + ENDIF + IF '-A' $ tcAttrib AND BITAND(dwFileAttributes, FILE_ATTRIBUTE_ARCHIVE) = FILE_ATTRIBUTE_ARCHIVE + dwFileAttributes = dwFileAttributes - FILE_ATTRIBUTE_ARCHIVE + ENDIF + IF '-S' $ tcAttrib AND BITAND(dwFileAttributes, FILE_ATTRIBUTE_SYSTEM) = FILE_ATTRIBUTE_SYSTEM + dwFileAttributes = dwFileAttributes - FILE_ATTRIBUTE_SYSTEM + ENDIF + IF '-H' $ tcAttrib AND BITAND(dwFileAttributes, FILE_ATTRIBUTE_HIDDEN) = FILE_ATTRIBUTE_HIDDEN + dwFileAttributes = dwFileAttributes - FILE_ATTRIBUTE_HIDDEN + ENDIF + IF '-D' $ tcAttrib AND BITAND(dwFileAttributes, FILE_ATTRIBUTE_DIRECTORY) = FILE_ATTRIBUTE_DIRECTORY + dwFileAttributes = dwFileAttributes - FILE_ATTRIBUTE_DIRECTORY + ENDIF + IF '-T' $ tcAttrib AND BITAND(dwFileAttributes, FILE_ATTRIBUTE_TEMPORARY) = FILE_ATTRIBUTE_TEMPORARY + dwFileAttributes = dwFileAttributes - FILE_ATTRIBUTE_TEMPORARY + ENDIF + IF '-C' $ tcAttrib AND BITAND(dwFileAttributes, FILE_ATTRIBUTE_COMPRESSED) = FILE_ATTRIBUTE_COMPRESSED + dwFileAttributes = dwFileAttributes - FILE_ATTRIBUTE_COMPRESSED + ENDIF + + * setting selected attributes + =SetFileAttributes(tcFilename, dwFileAttributes) + ENDIF + ENDPROC + + PROCEDURE compileFoxProBinary LPARAMETERS tcFilename LOCAL lcType @@ -565,9 +645,9 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM *-------------------------------------------------------------------------------------------------------------- * PARÁMETROS: (!=Obligatorio | ?=Opcional) (@=Pasar por referencia | v=Pasar por valor) (IN/OUT) * tc_InputFile (!v IN ) Nombre del archivo de entrada - * tcType_na (?v IN ) NO DISPONIBLE. Se mantiene por compatibilidad con SourceSafe - * tcTextName_na (?v IN ) NO DISPONIBLE. Se mantiene por compatibilidad con SourceSafe - * tlGenText_na (?v IN ) NO DISPONIBLE. Se mantiene por compatibilidad con SourceSafe + * tcType (?v IN ) NO DISPONIBLE. Se mantiene por compatibilidad con SourceSafe + * tcTextName (?v IN ) NO DISPONIBLE. Se mantiene por compatibilidad con SourceSafe + * tlGenText (?v IN ) NO DISPONIBLE. Se mantiene por compatibilidad con SourceSafe * tcDontShowErrors (?v IN ) '1' para no mostrar mensajes de error (MESSAGEBOX) * tcDebug (?v IN ) '1' para habilitar modo debug (SOLO DESARROLLO) * tcDontShowProgress (?v IN ) '1' para inhabilitar la barra de progreso @@ -582,7 +662,7 @@ 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 *-------------------------------------------------------------------------------------------------------------- - LPARAMETERS tc_InputFile, tcType_na, tcTextName_na, tlGenText_na, tcDontShowErrors, tcDebug, tcDontShowProgress ; + LPARAMETERS tc_InputFile, tcType, tcTextName, tlGenText, tcDontShowErrors, tcDebug, tcDontShowProgress ; , toModulo, toEx AS EXCEPTION, tlRelanzarError, tcOriginalFileName, tcRecompile TRY @@ -698,25 +778,87 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM ENDFOR OTHERWISE - *-- UN ARCHIVO INDIVIDUAL - IF FILE(tc_InputFile) + *-- UN ARCHIVO INDIVIDUAL O CONSULTA DE SOPORTE DE ARCHIVO + IF LEN(NVL(tc_InputFile,'')) = 1 + *-- Consulta de soporte de conversión (compatibilidad con SourceSafe) + DO CASE + CASE tc_InputFile $ 'dD' && DBC, DBF + lnCodError = 1 + CASE tc_InputFile $ 'KBMRV' && SCX, LBX, MNX, FRX, VCX + lnCodError = 2 + OTHERWISE + lnCodError = 0 + ENDCASE + + ELSE + IF NOT EMPTY(tcType) AND NOT EMPTY(tcTextName) + *-- Compatibilidad con SourceSafe + lcExt = JUSTEXT(tc_InputFile) - IF THIS.l_Recompile AND LEN(tcRecompile) > 3 AND DIRECTORY(tcRecompile) - CD (tcRecompile) - ELSE - CD (JUSTPATH(tc_InputFile)) - ENDIF - - THIS.c_LogFile = tc_InputFile + '.LOG' - - IF THIS.l_Debug - IF FILE( THIS.c_LogFile ) - ERASE ( THIS.c_LogFile ) + 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 - THIS.writeLog( THIS.c_Foxbin2prg_FullPath + ' - FileSpec: ' + EVL(tc_InputFile,'') ) ENDIF - lnCodError = THIS.Convertir( tc_InputFile, toModulo, toEx, tlRelanzarError, tcOriginalFileName ) + IF FILE(tc_InputFile) + + IF THIS.l_Recompile AND LEN(tcRecompile) > 3 AND DIRECTORY(tcRecompile) + CD (tcRecompile) + ELSE + CD (JUSTPATH(tc_InputFile)) + ENDIF + + 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 + + lnCodError = THIS.Convertir( tc_InputFile, toModulo, toEx, tlRelanzarError, tcOriginalFileName ) + ENDIF ENDIF ENDCASE @@ -1041,6 +1183,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' ) lcLog = '' DO (tcEXE_CAPS) WITH tcFileName, '', 'F', lcLog, .T. THIS.writeLog( lcLog ) @@ -8010,7 +8153,9 @@ DEFINE CLASS c_conversor_vcx_a_prg AS c_conversor_bin_a_prg CASE FILE(THIS.c_OutputFile) AND SUBSTR( FILETOSTR( THIS.c_OutputFile ), lnLen ) == SUBSTR( C_FB2PRG_CODE, lnLen ) *THIS.writeLog( 'El archivo de salida [' + THIS.c_OutputFile + '] no se sobreescribe por ser igual al generado.' ) THIS.writeLog( TEXTMERGE(C_OUTPUT_FILE_IS_NOT_OVERWRITEN_LOC) ) - CASE toFoxbin2prg.doBackup( .F., .T., '', '', '' ) AND STRTOFILE( C_FB2PRG_CODE, THIS.c_OutputFile ) = 0 + CASE toFoxbin2prg.doBackup( .F., .T., '', '', '' ) ; + AND toFoxBin2prg.ChangeFileAttribute( THIS.c_OutputFile, '-R' ) ; + AND STRTOFILE( C_FB2PRG_CODE, THIS.c_OutputFile ) = 0 *ERROR 'No se puede generar el archivo [' + THIS.c_OutputFile + '] porque es ReadOnly' ERROR (TEXTMERGE(C_CANT_GENERATE_FILE_BECAUSE_IT_IS_READONLY_LOC)) ENDCASE @@ -8177,7 +8322,9 @@ DEFINE CLASS c_conversor_scx_a_prg AS c_conversor_bin_a_prg CASE FILE(THIS.c_OutputFile) AND SUBSTR( FILETOSTR( THIS.c_OutputFile ), lnLen ) == SUBSTR( C_FB2PRG_CODE, lnLen ) *THIS.writeLog( 'El archivo de salida [' + THIS.c_OutputFile + '] no se sobreescribe por ser igual al generado.' ) THIS.writeLog( TEXTMERGE(C_OUTPUT_FILE_IS_NOT_OVERWRITEN_LOC) ) - CASE toFoxbin2prg.doBackup( .F., .T., '', '', '' ) AND STRTOFILE( C_FB2PRG_CODE, THIS.c_OutputFile ) = 0 + CASE toFoxbin2prg.doBackup( .F., .T., '', '', '' ) ; + AND toFoxBin2prg.ChangeFileAttribute( THIS.c_OutputFile, '-R' ) ; + AND STRTOFILE( C_FB2PRG_CODE, THIS.c_OutputFile ) = 0 *ERROR 'No se puede generar el archivo [' + THIS.c_OutputFile + '] porque es ReadOnly' ERROR (TEXTMERGE(C_CANT_GENERATE_FILE_BECAUSE_IT_IS_READONLY_LOC)) ENDCASE @@ -8486,7 +8633,9 @@ DEFINE CLASS c_conversor_pjx_a_prg AS c_conversor_bin_a_prg CASE FILE(THIS.c_OutputFile) AND SUBSTR( FILETOSTR( THIS.c_OutputFile ), lnLen ) == SUBSTR( C_FB2PRG_CODE, lnLen ) *THIS.writeLog( 'El archivo de salida [' + THIS.c_OutputFile + '] no se sobreescribe por ser igual al generado.' ) THIS.writeLog( TEXTMERGE(C_OUTPUT_FILE_IS_NOT_OVERWRITEN_LOC) ) - CASE toFoxbin2prg.doBackup( .F., .T., '', '', '' ) AND STRTOFILE( C_FB2PRG_CODE, THIS.c_OutputFile ) = 0 + CASE toFoxbin2prg.doBackup( .F., .T., '', '', '' ) ; + AND toFoxBin2prg.ChangeFileAttribute( THIS.c_OutputFile, '-R' ) ; + AND STRTOFILE( C_FB2PRG_CODE, THIS.c_OutputFile ) = 0 *ERROR 'No se puede generar el archivo [' + THIS.c_OutputFile + '] porque es ReadOnly' ERROR (TEXTMERGE(C_CANT_GENERATE_FILE_BECAUSE_IT_IS_READONLY_LOC)) ENDCASE @@ -8856,7 +9005,9 @@ DEFINE CLASS c_conversor_pjm_a_prg AS c_conversor_bin_a_prg CASE FILE(THIS.c_OutputFile) AND SUBSTR( FILETOSTR( THIS.c_OutputFile ), lnLen ) == SUBSTR( C_FB2PRG_CODE, lnLen ) *THIS.writeLog( 'El archivo de salida [' + THIS.c_OutputFile + '] no se sobreescribe por ser igual al generado.' ) THIS.writeLog( TEXTMERGE(C_OUTPUT_FILE_IS_NOT_OVERWRITEN_LOC) ) - CASE toFoxbin2prg.doBackup( .F., .T., '', '', '' ) AND STRTOFILE( C_FB2PRG_CODE, THIS.c_OutputFile ) = 0 + CASE toFoxbin2prg.doBackup( .F., .T., '', '', '' ) ; + AND toFoxBin2prg.ChangeFileAttribute( THIS.c_OutputFile, '-R' ) ; + AND STRTOFILE( C_FB2PRG_CODE, THIS.c_OutputFile ) = 0 *ERROR 'No se puede generar el archivo [' + THIS.c_OutputFile + '] porque es ReadOnly' ERROR (TEXTMERGE(C_CANT_GENERATE_FILE_BECAUSE_IT_IS_READONLY_LOC)) ENDCASE @@ -8991,7 +9142,9 @@ DEFINE CLASS c_conversor_frx_a_prg AS c_conversor_bin_a_prg CASE FILE(THIS.c_OutputFile) AND SUBSTR( FILETOSTR( THIS.c_OutputFile ), lnLen ) == SUBSTR( C_FB2PRG_CODE, lnLen ) *THIS.writeLog( 'El archivo de salida [' + THIS.c_OutputFile + '] no se sobreescribe por ser igual al generado.' ) THIS.writeLog( TEXTMERGE(C_OUTPUT_FILE_IS_NOT_OVERWRITEN_LOC) ) - CASE toFoxbin2prg.doBackup( .F., .T., '', '', '' ) AND STRTOFILE( C_FB2PRG_CODE, THIS.c_OutputFile ) = 0 + CASE toFoxbin2prg.doBackup( .F., .T., '', '', '' ) ; + AND toFoxBin2prg.ChangeFileAttribute( THIS.c_OutputFile, '-R' ) ; + AND STRTOFILE( C_FB2PRG_CODE, THIS.c_OutputFile ) = 0 *ERROR 'No se puede generar el archivo [' + THIS.c_OutputFile + '] porque es ReadOnly' ERROR (TEXTMERGE(C_CANT_GENERATE_FILE_BECAUSE_IT_IS_READONLY_LOC)) ENDCASE @@ -9067,7 +9220,9 @@ DEFINE CLASS c_conversor_dbf_a_prg AS c_conversor_bin_a_prg CASE FILE(THIS.c_OutputFile) AND SUBSTR( FILETOSTR( THIS.c_OutputFile ), lnLen ) == SUBSTR( C_FB2PRG_CODE, lnLen ) *THIS.writeLog( 'El archivo de salida [' + THIS.c_OutputFile + '] no se sobreescribe por ser igual al generado.' ) THIS.writeLog( TEXTMERGE(C_OUTPUT_FILE_IS_NOT_OVERWRITEN_LOC) ) - CASE toFoxbin2prg.doBackup( .F., .T., '', '', '' ) AND STRTOFILE( C_FB2PRG_CODE, THIS.c_OutputFile ) = 0 + CASE toFoxbin2prg.doBackup( .F., .T., '', '', '' ) ; + AND toFoxBin2prg.ChangeFileAttribute( THIS.c_OutputFile, '-R' ) ; + AND STRTOFILE( C_FB2PRG_CODE, THIS.c_OutputFile ) = 0 *ERROR 'No se puede generar el archivo [' + THIS.c_OutputFile + '] porque es ReadOnly' ERROR (TEXTMERGE(C_CANT_GENERATE_FILE_BECAUSE_IT_IS_READONLY_LOC)) ENDCASE @@ -9167,7 +9322,9 @@ DEFINE CLASS c_conversor_dbc_a_prg AS c_conversor_bin_a_prg CASE FILE(THIS.c_OutputFile) AND SUBSTR( FILETOSTR( THIS.c_OutputFile ), lnLen ) == SUBSTR( C_FB2PRG_CODE, lnLen ) *THIS.writeLog( 'El archivo de salida [' + THIS.c_OutputFile + '] no se sobreescribe por ser igual al generado.' ) THIS.writeLog( TEXTMERGE(C_OUTPUT_FILE_IS_NOT_OVERWRITEN_LOC) ) - CASE toFoxbin2prg.doBackup( .F., .T., '', '', '' ) AND STRTOFILE( C_FB2PRG_CODE, THIS.c_OutputFile ) = 0 + CASE toFoxbin2prg.doBackup( .F., .T., '', '', '' ) ; + AND toFoxBin2prg.ChangeFileAttribute( THIS.c_OutputFile, '-R' ) ; + AND STRTOFILE( C_FB2PRG_CODE, THIS.c_OutputFile ) = 0 *ERROR 'No se puede generar el archivo [' + THIS.c_OutputFile + '] porque es ReadOnly' ERROR (TEXTMERGE(C_CANT_GENERATE_FILE_BECAUSE_IT_IS_READONLY_LOC)) ENDCASE @@ -9245,7 +9402,9 @@ DEFINE CLASS c_conversor_mnx_a_prg AS c_conversor_bin_a_prg CASE FILE(THIS.c_OutputFile) AND SUBSTR( FILETOSTR( THIS.c_OutputFile ), lnLen ) == SUBSTR( C_FB2PRG_CODE, lnLen ) *THIS.writeLog( 'El archivo de salida [' + THIS.c_OutputFile + '] no se sobreescribe por ser igual al generado.' ) THIS.writeLog( TEXTMERGE(C_OUTPUT_FILE_IS_NOT_OVERWRITEN_LOC) ) - CASE toFoxbin2prg.doBackup( .F., .T., '', '', '' ) AND STRTOFILE( C_FB2PRG_CODE, THIS.c_OutputFile ) = 0 + CASE toFoxbin2prg.doBackup( .F., .T., '', '', '' ) ; + AND toFoxBin2prg.ChangeFileAttribute( THIS.c_OutputFile, '-R' ) ; + AND STRTOFILE( C_FB2PRG_CODE, THIS.c_OutputFile ) = 0 *ERROR 'No se puede generar el archivo [' + THIS.c_OutputFile + '] porque es ReadOnly' ERROR (TEXTMERGE(C_CANT_GENERATE_FILE_BECAUSE_IT_IS_READONLY_LOC)) ENDCASE