Changeset: 502 fdbozzo - 21/11/2014 17:32:55:

- Agregado soporte para comentarios && en las configuraciones de foxbin2prg.cfg
This commit is contained in:
fdbozzo
2014-11-21 17:35:31 +01:00

View File

@@ -107,6 +107,7 @@
* 19/09/2014 FDBOZZO v1.19.34 Arreglo bug: Si se ejecuta FoxBin2Prg desde ventana de comandos FoxPro para un proyecto y hay alg<6C>n archivo abierto o cacheado, se produce un error al intentar capitalizar el archivo de entrada (Jim Nelson) * 19/09/2014 FDBOZZO v1.19.34 Arreglo bug: Si se ejecuta FoxBin2Prg desde ventana de comandos FoxPro para un proyecto y hay alg<6C>n archivo abierto o cacheado, se produce un error al intentar capitalizar el archivo de entrada (Jim Nelson)
* 26/09/2014 FDBOZZO v1.19.35 Mejora: Generar siempre el mismo Timestamp y UniqueID para los binarios minimizar<61>a los cambios al regenerarlos (Marcio Gomez G.) * 26/09/2014 FDBOZZO v1.19.35 Mejora: Generar siempre el mismo Timestamp y UniqueID para los binarios minimizar<61>a los cambios al regenerarlos (Marcio Gomez G.)
* 08/10/2014 FDBOZZO v1.19.36 Arreglo bug: Al generar el mn2 el identificador queda vac<61>o (bug introducido en v1.19.35) * 08/10/2014 FDBOZZO v1.19.36 Arreglo bug: Al generar el mn2 el identificador queda vac<61>o (bug introducido en v1.19.35)
* 19/11/2014 FDBOZZO v1.19.37 Mejora: Las configuraciones de foxbin2prg.cfg no permiten comentarios && al final (edyshor)
* 19/11/2014 FDBOZZO v1.19.37 Arreglo bug: "String is too long to fit" cuando se procesa un DBF grande con DBF_Conversion_Support = 4 (edyshor) * 19/11/2014 FDBOZZO v1.19.37 Arreglo bug: "String is too long to fit" cuando se procesa un DBF grande con DBF_Conversion_Support = 4 (edyshor)
* 19/11/2014 FDBOZZO v1.19.37 Mejora dbf: Nuevo par<61>metro ClearDBFLastUpdate para evitar diferencias por este dato (edyshor) * 19/11/2014 FDBOZZO v1.19.37 Mejora dbf: Nuevo par<61>metro ClearDBFLastUpdate para evitar diferencias por este dato (edyshor)
* 21/10/2014 FDBOZZO v1.19.37 Mejora: Permitir generar una clase por archivo (Ryan Harris/Lutz Scheffler) * 21/10/2014 FDBOZZO v1.19.37 Mejora: Permitir generar una clase por archivo (Ryan Harris/Lutz Scheffler)
@@ -157,6 +158,7 @@
* 28/08/2014 Peter Hipp REPORTE BUG mnx v1.19.32: Si una opci<63>n tiene asociado un Procedure de 1 l<>nea, no se mantiene como Procedure y se convierte a Command (solucionado en v1.19.33) * 28/08/2014 Peter Hipp REPORTE BUG mnx v1.19.32: Si una opci<63>n tiene asociado un Procedure de 1 l<>nea, no se mantiene como Procedure y se convierte a Command (solucionado en v1.19.33)
* 19/09/2014 Jim Nelson REPORTE BUG v1.19.33: Si se ejecuta FoxBin2Prg desde ventana de comandos FoxPro para un proyecto y hay alg<6C>n archivo abierto o cacheado, se produce un error (solucionado en v1.19.34) * 19/09/2014 Jim Nelson REPORTE BUG v1.19.33: Si se ejecuta FoxBin2Prg desde ventana de comandos FoxPro para un proyecto y hay alg<6C>n archivo abierto o cacheado, se produce un error (solucionado en v1.19.34)
* 26/09/2014 Marcio Gomez G. MEJORA v1.19.34: Generar siempre el mismo Timestamp y UniqueID para los binarios minimizar<61>a los cambios al regenerarlos (Agregado en v1.19.35) * 26/09/2014 Marcio Gomez G. MEJORA v1.19.34: Generar siempre el mismo Timestamp y UniqueID para los binarios minimizar<61>a los cambios al regenerarlos (Agregado en v1.19.35)
* 19/11/2014 edyshor MEJORA cfg v1.19.36: DBF_Conversion_Excluded no permite comentarios && al final (Agregado en v1.19.37)
* 19/11/2014 edyshor REPORTE BUG dbf v1.19.36: "String is too long to fit" cuando se procesa un DBF grande con DBF_Conversion_Support = 4 (Agregado en v1.19.37) * 19/11/2014 edyshor REPORTE BUG dbf v1.19.36: "String is too long to fit" cuando se procesa un DBF grande con DBF_Conversion_Support = 4 (Agregado en v1.19.37)
* 19/11/2014 edyshor MEJORA dbf v1.19.36: Nuevo par<61>metro ClearDBFLastUpdate para evitar diferencias por este dato (Agregado en v1.19.37) * 19/11/2014 edyshor MEJORA dbf v1.19.36: Nuevo par<61>metro ClearDBFLastUpdate para evitar diferencias por este dato (Agregado en v1.19.37)
* 14/10/2014 Lutz Scheffler MEJORA v1.19.36: Permitir generar una clase por archivo (pregunta) * 14/10/2014 Lutz Scheffler MEJORA v1.19.36: Permitir generar una clase por archivo (pregunta)
@@ -518,6 +520,7 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM
+ [<memberdata name="get_l_configevaluated" display="get_l_ConfigEvaluated"/>] ; + [<memberdata name="get_l_configevaluated" display="get_l_ConfigEvaluated"/>] ;
+ [<memberdata name="get_ext2fromext" display="Get_Ext2FromExt"/>] ; + [<memberdata name="get_ext2fromext" display="Get_Ext2FromExt"/>] ;
+ [<memberdata name="get_program_header" display="get_PROGRAM_HEADER"/>] ; + [<memberdata name="get_program_header" display="get_PROGRAM_HEADER"/>] ;
+ [<memberdata name="get_separatedlineandcomment" display="get_SeparatedLineAndComment"/>] ;
+ [<memberdata name="getnext_bak" display="getNext_BAK"/>] ; + [<memberdata name="getnext_bak" display="getNext_BAK"/>] ;
+ [<memberdata name="run_aftercreatetable" display="run_AfterCreateTable"/>] ; + [<memberdata name="run_aftercreatetable" display="run_AfterCreateTable"/>] ;
+ [<memberdata name="run_aftercreate_db2" display="run_AfterCreate_DB2"/>] ; + [<memberdata name="run_aftercreate_db2" display="run_AfterCreate_DB2"/>] ;
@@ -566,6 +569,7 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM
+ [<memberdata name="dbc_conversion_support" display="DBC_Conversion_Support"/>] ; + [<memberdata name="dbc_conversion_support" display="DBC_Conversion_Support"/>] ;
+ [<memberdata name="renamefile" display="RenameFile"/>] ; + [<memberdata name="renamefile" display="RenameFile"/>] ;
+ [<memberdata name="renametmpfile2tx2file" display="RenameTmpFile2Tx2File"/>] ; + [<memberdata name="renametmpfile2tx2file" display="RenameTmpFile2Tx2File"/>] ;
+ [<memberdata name="set_line" display="set_Line"/>] ;
+ [<memberdata name="tienesoporte_bin2prg" display="TieneSoporte_Bin2Prg"/>] ; + [<memberdata name="tienesoporte_bin2prg" display="TieneSoporte_Bin2Prg"/>] ;
+ [<memberdata name="tienesoporte_prg2bin" display="TieneSoporte_Prg2Bin"/>] ; + [<memberdata name="tienesoporte_prg2bin" display="TieneSoporte_Prg2Bin"/>] ;
+ [<memberdata name="t_inputfile_timestamp" display="t_InputFile_TimeStamp"/>] ; + [<memberdata name="t_inputfile_timestamp" display="t_InputFile_TimeStamp"/>] ;
@@ -1165,17 +1169,17 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM
tcOutputFile_Ext1 = FORCEEXT(tcOutputFile, lcExt_1) tcOutputFile_Ext1 = FORCEEXT(tcOutputFile, lcExt_1)
IF FILE( tcOutputFile_Ext1 ) IF FILE( tcOutputFile_Ext1 )
*-- LOG *-- LOG
DO CASE DO CASE
CASE EMPTY(lcExt_2) CASE EMPTY(lcExt_2)
.writeLog( C_BACKUP_OF_LOC + tcOutputFile_Ext1 ) .writeLog( C_BACKUP_OF_LOC + tcOutputFile_Ext1 )
CASE EMPTY(lcExt_3) CASE EMPTY(lcExt_3)
.writeLog( C_BACKUP_OF_LOC + tcOutputFile_Ext1 + '/' + lcExt_2 ) .writeLog( C_BACKUP_OF_LOC + tcOutputFile_Ext1 + '/' + lcExt_2 )
OTHERWISE OTHERWISE
.writeLog( C_BACKUP_OF_LOC + tcOutputFile_Ext1 + '/' + lcExt_2 + '/' + lcExt_3 ) .writeLog( C_BACKUP_OF_LOC + tcOutputFile_Ext1 + '/' + lcExt_2 + '/' + lcExt_3 )
ENDCASE ENDCASE
*-- COPIA BACKUP *-- COPIA BACKUP
COPY FILE ( tcOutputFile_Ext1 ) TO ( tcBakFile_1 ) COPY FILE ( tcOutputFile_Ext1 ) TO ( tcBakFile_1 )
IF NOT EMPTY(lcExt_2) IF NOT EMPTY(lcExt_2)
@@ -1183,7 +1187,7 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM
IF FILE( tcOutputFile_Ext2 ) IF FILE( tcOutputFile_Ext2 )
COPY FILE ( tcOutputFile_Ext2 ) TO ( tcBakFile_2 ) COPY FILE ( tcOutputFile_Ext2 ) TO ( tcBakFile_2 )
ENDIF ENDIF
ENDIF ENDIF
IF NOT EMPTY(lcExt_3) IF NOT EMPTY(lcExt_3)
@@ -1191,11 +1195,11 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM
IF FILE( tcOutputFile_Ext3 ) IF FILE( tcOutputFile_Ext3 )
COPY FILE ( tcOutputFile_Ext3 ) TO ( tcBakFile_3 ) COPY FILE ( tcOutputFile_Ext3 ) TO ( tcBakFile_3 )
ENDIF
ENDIF
ENDIF ENDIF
ENDIF ENDIF
ENDIF ENDIF
ENDIF
ENDIF
ENDWITH && THIS ENDWITH && THIS
CATCH TO toEx CATCH TO toEx
@@ -1226,7 +1230,7 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM
LPARAMETERS tcDontShowProgress, tcDontShowErrors, tcNoTimestamps, tcDebug, tcRecompile, tcExtraBackupLevels ; LPARAMETERS tcDontShowProgress, tcDontShowErrors, tcNoTimestamps, tcDebug, tcRecompile, tcExtraBackupLevels ;
, tcClearUniqueID, tcOptimizeByFilestamp, tc_InputFile , tcClearUniqueID, tcOptimizeByFilestamp, tc_InputFile
LOCAL lcConfigFile, llExisteConfig, laConfig(1), I, lcConfData, lcExt, lcValue, lc_CFG_Path ; LOCAL lcConfigFile, llExisteConfig, laConfig(1), I, lcConfData, lcExt, lcValue, lc_CFG_Path, lcConfigLine ;
, lo_CFG AS CL_CFG OF 'FOXBIN2PRG.PRG' ; , lo_CFG AS CL_CFG OF 'FOXBIN2PRG.PRG' ;
, lo_Configuration AS Collection ; , lo_Configuration AS Collection ;
, loEx as Exception , loEx as Exception
@@ -1273,10 +1277,13 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM
ENDIF ENDIF
FOR I = 1 TO ALINES( laConfig, FILETOSTR( lcConfigFile ), 1+4 ) FOR I = 1 TO ALINES( laConfig, FILETOSTR( lcConfigFile ), 1+4 )
laConfig(I) = LOWER( laConfig(I) ) *laConfig(I) = LOWER( laConfig(I) )
.set_Line( @lcConfigLine, @laConfig, I )
.get_SeparatedLineAndComment( @lcConfigLine )
laConfig(I) = LOWER( lcConfigLine )
DO CASE DO CASE
CASE INLIST( LEFT( laConfig(I), 1 ), '*', '#', '/', "'" ) CASE EMPTY( laConfig(I) ) OR INLIST( LEFT( laConfig(I), 1 ), '*', '#', '/', "'" )
LOOP LOOP
CASE LEFT( laConfig(I), 10 ) == LOWER('Extension:') CASE LEFT( laConfig(I), 10 ) == LOWER('Extension:')
@@ -2434,6 +2441,26 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM
ENDPROC ENDPROC
PROCEDURE get_SeparatedLineAndComment
*---------------------------------------------------------------------------------------------------
* PAR<41>METROS: (v=Pasar por valor | @=Pasar por referencia) (!=Obligatorio | ?=Opcional) (IN/OUT)
* tcLine (!@ IN/OUT) L<>nea a separar del comentario
* tcComment (@? OUT) Comentario
*---------------------------------------------------------------------------------------------------
LPARAMETERS tcLine, tcComment
LOCAL ln_AT_Cmt
tcComment = ''
ln_AT_Cmt = AT( '&'+'&', tcLine)
IF ln_AT_Cmt > 0
tcComment = LTRIM( SUBSTR( tcLine, ln_AT_Cmt + 2 ) )
tcLine = RTRIM( LEFT( tcLine, ln_AT_Cmt - 1 ), 0, CHR(9) ) && Quito TABS
ENDIF
RETURN (ln_AT_Cmt > 0)
ENDPROC
******************************************************************************************************************* *******************************************************************************************************************
PROCEDURE normalizarCapitalizacionArchivos PROCEDURE normalizarCapitalizacionArchivos
LPARAMETERS tl_NormalizeInputFile, tcFileName LPARAMETERS tl_NormalizeInputFile, tcFileName
@@ -2485,41 +2512,41 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM
ENDCASE ENDCASE
*-- Normalizar archivo(s) de entrada. El primero siempre se normaliza (??2, ??X, DBF, DBC) *-- Normalizar archivo(s) de entrada. El primero siempre se normaliza (??2, ??X, DBF, DBC)
.RenameFile( tcFileName, lcEXE_CAPS, loFSO, llRelanzarError ) .RenameFile( tcFileName, lcEXE_CAPS, loFSO, llRelanzarError )
DO CASE DO CASE
CASE lcType = 'PJX' CASE lcType = 'PJX'
.RenameFile( FORCEEXT(tcFileName,'PJT'), lcEXE_CAPS, loFSO, llRelanzarError ) .RenameFile( FORCEEXT(tcFileName,'PJT'), lcEXE_CAPS, loFSO, llRelanzarError )
CASE lcType = 'VCX' CASE lcType = 'VCX'
.RenameFile( FORCEEXT(tcFileName,'VCT'), lcEXE_CAPS, loFSO, llRelanzarError ) .RenameFile( FORCEEXT(tcFileName,'VCT'), lcEXE_CAPS, loFSO, llRelanzarError )
CASE lcType = 'SCX' CASE lcType = 'SCX'
.RenameFile( FORCEEXT(tcFileName,'SCT'), lcEXE_CAPS, loFSO, llRelanzarError ) .RenameFile( FORCEEXT(tcFileName,'SCT'), lcEXE_CAPS, loFSO, llRelanzarError )
CASE lcType = 'FRX' CASE lcType = 'FRX'
.RenameFile( FORCEEXT(tcFileName,'FRT'), lcEXE_CAPS, loFSO, llRelanzarError ) .RenameFile( FORCEEXT(tcFileName,'FRT'), lcEXE_CAPS, loFSO, llRelanzarError )
CASE lcType = 'LBX' CASE lcType = 'LBX'
.RenameFile( FORCEEXT(tcFileName,'LBT'), lcEXE_CAPS, loFSO, llRelanzarError ) .RenameFile( FORCEEXT(tcFileName,'LBT'), lcEXE_CAPS, loFSO, llRelanzarError )
CASE lcType = 'DBF' CASE lcType = 'DBF'
IF FILE( FORCEEXT(tcFileName,'FPT') ) IF FILE( FORCEEXT(tcFileName,'FPT') )
.RenameFile( FORCEEXT(tcFileName,'FPT'), lcEXE_CAPS, loFSO, llRelanzarError ) .RenameFile( FORCEEXT(tcFileName,'FPT'), lcEXE_CAPS, loFSO, llRelanzarError )
ENDIF ENDIF
IF FILE( FORCEEXT(tcFileName,'CDX') ) IF FILE( FORCEEXT(tcFileName,'CDX') )
.RenameFile( FORCEEXT(tcFileName,'CDX'), lcEXE_CAPS, loFSO, llRelanzarError ) .RenameFile( FORCEEXT(tcFileName,'CDX'), lcEXE_CAPS, loFSO, llRelanzarError )
ENDIF ENDIF
CASE lcType = 'DBC' CASE lcType = 'DBC'
.RenameFile( FORCEEXT(tcFileName,'DCX'), lcEXE_CAPS, loFSO, llRelanzarError ) .RenameFile( FORCEEXT(tcFileName,'DCX'), lcEXE_CAPS, loFSO, llRelanzarError )
.RenameFile( FORCEEXT(tcFileName,'DCT'), lcEXE_CAPS, loFSO, llRelanzarError ) .RenameFile( FORCEEXT(tcFileName,'DCT'), lcEXE_CAPS, loFSO, llRelanzarError )
CASE lcType = 'MNX' CASE lcType = 'MNX'
.RenameFile( FORCEEXT(tcFileName,'MNT'), lcEXE_CAPS, loFSO, llRelanzarError ) .RenameFile( FORCEEXT(tcFileName,'MNT'), lcEXE_CAPS, loFSO, llRelanzarError )
ENDCASE ENDCASE
ENDWITH && THIS ENDWITH && THIS
@@ -2574,6 +2601,13 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM
ENDPROC ENDPROC
*******************************************************************************************************************
PROCEDURE set_Line
LPARAMETERS tcLine, taCodeLines, I
tcLine = LTRIM( taCodeLines(I), 0, ' ', CHR(9) )
ENDPROC
******************************************************************************************************************* *******************************************************************************************************************
PROCEDURE writeErrorLog PROCEDURE writeErrorLog
LPARAMETERS tcText LPARAMETERS tcText
@@ -6280,7 +6314,7 @@ DEFINE CLASS c_conversor_prg_a_bin AS c_conversor_base
llEXTERNAL_CLASS_Completed = .T. llEXTERNAL_CLASS_Completed = .T.
*CASE .analizarBloque_DEFINE_CLASS( @toModulo, @loClase, @lcLine, @taCodeLines, @I, tnCodeLines ; *CASE .analizarBloque_DEFINE_CLASS( @toModulo, @loClase, @lcLine, @taCodeLines, @I, tnCodeLines ;
, @lcProcedureAbierto, @taLineasExclusion, @tnBloquesExclusion, @lc_Comentario ) , @lcProcedureAbierto, @taLineasExclusion, @tnBloquesExclusion, @lc_Comentario )
*-- Puede haber varias clases definidas *-- Puede haber varias clases definidas
* llEXTERNAL_CLASS_Completed = .T. * llEXTERNAL_CLASS_Completed = .T.
@@ -8446,7 +8480,7 @@ DEFINE CLASS c_conversor_prg_a_dbf AS c_conversor_prg_a_bin
IF toFoxBin2Prg.l_ClearDBFLastUpdate THEN IF toFoxBin2Prg.l_ClearDBFLastUpdate THEN
ldLastUpdate = EVALUATE( '{^2013/11/04}' ) ldLastUpdate = EVALUATE( '{^2013/11/04}' )
ELSE ELSE
ldLastUpdate = EVALUATE( '{^' + toTable._LastUpdate + '}' ) ldLastUpdate = EVALUATE( '{^' + toTable._LastUpdate + '}' )
ENDIF ENDIF
loDBFUtils.write_DBC_BackLink( .c_OutputFile, toTable._Database, ldLastUpdate ) loDBFUtils.write_DBC_BackLink( .c_OutputFile, toTable._Database, ldLastUpdate )
@@ -10666,9 +10700,9 @@ DEFINE CLASS c_conversor_bin_a_prg AS c_conversor_base
*!* ENDSCAN *!* ENDSCAN
TEXT TO C_FB2PRG_CODE ADDITIVE TEXTMERGE NOSHOW FLAGS 1+2 PRETEXT 1+2 TEXT TO C_FB2PRG_CODE ADDITIVE TEXTMERGE NOSHOW FLAGS 1+2 PRETEXT 1+2
* *
ENDTEXT ENDTEXT
*!* CATCH TO loEx *!* CATCH TO loEx
*!* IF THIS.l_Debug AND _VFP.STARTMODE = 0 *!* IF THIS.l_Debug AND _VFP.STARTMODE = 0
@@ -11009,7 +11043,7 @@ DEFINE CLASS c_conversor_vcx_a_prg AS c_conversor_bin_a_prg
ENDFOR ENDFOR
.write_OutputFile( @lcCodigo, lcOutputFile, @toFoxBin2Prg ) .write_OutputFile( @lcCodigo, lcOutputFile, @toFoxBin2Prg )
ENDIF ENDIF
ENDIF ENDIF
ENDWITH && THIS ENDWITH && THIS
@@ -11275,7 +11309,7 @@ DEFINE CLASS c_conversor_scx_a_prg AS c_conversor_bin_a_prg
ENDFOR ENDFOR
.write_OutputFile( @lcCodigo, lcOutputFile, @toFoxBin2Prg ) .write_OutputFile( @lcCodigo, lcOutputFile, @toFoxBin2Prg )
ENDIF ENDIF
ENDIF ENDIF
ENDWITH && THIS ENDWITH && THIS
@@ -12241,21 +12275,21 @@ DEFINE CLASS c_conversor_dbf_a_prg AS c_conversor_bin_a_prg
*-- Genero el DB2, renombrando el TMP *-- Genero el DB2, renombrando el TMP
IF .l_Test IF .l_Test
toModulo = C_FB2PRG_CODE toModulo = C_FB2PRG_CODE
ELSE ELSE
DO CASE DO CASE
CASE FILE(.c_OutputFile) AND toFoxBin2Prg.FilesComparedAreEqual( .c_OutputFile + '.TMP', .c_OutputFile ) = 1 CASE FILE(.c_OutputFile) AND toFoxBin2Prg.FilesComparedAreEqual( .c_OutputFile + '.TMP', .c_OutputFile ) = 1
ERASE (.c_OutputFile + '.TMP') ERASE (.c_OutputFile + '.TMP')
*.writeLog( 'El archivo de salida [' + .c_OutputFile + '] no se sobreescribe por ser igual al generado.' ) *.writeLog( 'El archivo de salida [' + .c_OutputFile + '] no se sobreescribe por ser igual al generado.' )
.writeLog( TEXTMERGE(C_OUTPUT_FILE_IS_NOT_OVERWRITEN_LOC) ) .writeLog( TEXTMERGE(C_OUTPUT_FILE_IS_NOT_OVERWRITEN_LOC) )
CASE toFoxBin2Prg.doBackup( .F., .T., '', '', '' ) ; CASE toFoxBin2Prg.doBackup( .F., .T., '', '', '' ) ;
AND toFoxBin2Prg.ChangeFileAttribute( .c_OutputFile, '-R' ) ; AND toFoxBin2Prg.ChangeFileAttribute( .c_OutputFile, '-R' ) ;
AND NOT toFoxBin2Prg.RenameTmpFile2Tx2File( .c_OutputFile ) AND NOT toFoxBin2Prg.RenameTmpFile2Tx2File( .c_OutputFile )
*ERROR 'No se puede generar el archivo [' + .c_OutputFile + '] porque es ReadOnly' *ERROR 'No se puede generar el archivo [' + .c_OutputFile + '] porque es ReadOnly'
ERROR (TEXTMERGE(C_CANT_GENERATE_FILE_BECAUSE_IT_IS_READONLY_LOC)) ERROR (TEXTMERGE(C_CANT_GENERATE_FILE_BECAUSE_IT_IS_READONLY_LOC))
ENDCASE ENDCASE
ENDIF ENDIF
ELSE ELSE
C_FB2PRG_CODE = C_FB2PRG_CODE + loTable.toText( ln_HexFileType, ll_FileHasCDX, ll_FileHasMemo, ll_FileIsDBC, lc_DBC_Name, .c_InputFile, lc_FileTypeDesc, @toFoxBin2Prg ) C_FB2PRG_CODE = C_FB2PRG_CODE + loTable.toText( ln_HexFileType, ll_FileHasCDX, ll_FileHasMemo, ll_FileIsDBC, lc_DBC_Name, .c_InputFile, lc_FileTypeDesc, @toFoxBin2Prg )