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 f205034..a503c6a 100644
Binary files a/foxbin2prg.pjt and b/foxbin2prg.pjt differ
diff --git a/foxbin2prg.pjx b/foxbin2prg.pjx
index e17e388..985da2f 100644
Binary files a/foxbin2prg.pjx and b/foxbin2prg.pjx differ
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