Changeset: 499 fdbozzo - 20/11/2014 21:57:48:
This commit is contained in:
209
foxbin2prg.prg
209
foxbin2prg.prg
@@ -107,6 +107,8 @@
|
||||
* 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.)
|
||||
* 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 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)
|
||||
* 21/10/2014 FDBOZZO v1.19.37 Mejora: Permitir generar una clase por archivo (Ryan Harris/Lutz Scheffler)
|
||||
* 30/10/2014 FDBOZZO v1.19.37 Mejora: Optimizaciones
|
||||
* </HISTORIAL DE CAMBIOS Y NOTAS IMPORTANTES>
|
||||
@@ -155,6 +157,8 @@
|
||||
* 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)
|
||||
* 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 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)
|
||||
* 14/10/2014 Lutz Scheffler MEJORA v1.19.36: Permitir generar una clase por archivo (pregunta)
|
||||
* 21/10/2014 Ryan Harris MEJORA v1.19.36: Permitir generar una clase por archivo (sugerencia)
|
||||
* </TESTEO Y REPORTE DE BUGS (AGRADECIMIENTOS)>
|
||||
@@ -509,6 +513,7 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM
|
||||
+ [<memberdata name="evaluarconfiguracion" display="EvaluarConfiguracion"/>] ;
|
||||
+ [<memberdata name="exception2str" display="Exception2Str"/>] ;
|
||||
+ [<memberdata name="filenamefoundinfilter" display="FilenameFoundInFilter"/>] ;
|
||||
+ [<memberdata name="filescomparedareequal" display="FilesComparedAreEqual"/>] ;
|
||||
+ [<memberdata name="get_l_cfg_cachedaccess" display="get_l_CFG_CachedAccess"/>] ;
|
||||
+ [<memberdata name="get_l_configevaluated" display="get_l_ConfigEvaluated"/>] ;
|
||||
+ [<memberdata name="get_ext2fromext" display="Get_Ext2FromExt"/>] ;
|
||||
@@ -521,6 +526,7 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM
|
||||
+ [<memberdata name="l_cfg_cachedaccess" display="l_CFG_CachedAccess"/>] ;
|
||||
+ [<memberdata name="l_classperfilecheck" display="l_ClassPerFileCheck"/>] ;
|
||||
+ [<memberdata name="l_clearuniqueid" display="l_ClearUniqueID"/>] ;
|
||||
+ [<memberdata name="l_cleardbflastupdate" display="l_ClearDBFLastUpdate"/>] ;
|
||||
+ [<memberdata name="l_configevaluated" display="l_ConfigEvaluated"/>] ;
|
||||
+ [<memberdata name="l_debug" display="l_Debug"/>] ;
|
||||
+ [<memberdata name="l_dropnullcharsfromcode" display="l_DropNullCharsFromCode"/>] ;
|
||||
@@ -541,6 +547,7 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM
|
||||
+ [<memberdata name="n_existecapitalizacion" display="n_ExisteCapitalizacion"/>] ;
|
||||
+ [<memberdata name="n_extrabackuplevels" display="n_ExtraBackupLevels"/>] ;
|
||||
+ [<memberdata name="n_fb2prg_version" display="n_FB2PRG_Version"/>] ;
|
||||
+ [<memberdata name="n_filehandle" display="n_FileHandle"/>] ;
|
||||
+ [<memberdata name="normalizarcapitalizacionarchivos" display="normalizarCapitalizacionArchivos"/>] ;
|
||||
+ [<memberdata name="o_conversor" display="o_Conversor"/>] ;
|
||||
+ [<memberdata name="o_frm_avance" display="o_Frm_Avance"/>] ;
|
||||
@@ -558,6 +565,7 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM
|
||||
+ [<memberdata name="dbf_conversion_excluded" display="DBF_Conversion_Excluded"/>] ;
|
||||
+ [<memberdata name="dbc_conversion_support" display="DBC_Conversion_Support"/>] ;
|
||||
+ [<memberdata name="renamefile" display="RenameFile"/>] ;
|
||||
+ [<memberdata name="renametmpfile2tx2file" display="RenameTmpFile2Tx2File"/>] ;
|
||||
+ [<memberdata name="tienesoporte_bin2prg" display="TieneSoporte_Bin2Prg"/>] ;
|
||||
+ [<memberdata name="tienesoporte_prg2bin" display="TieneSoporte_Prg2Bin"/>] ;
|
||||
+ [<memberdata name="t_inputfile_timestamp" display="t_InputFile_TimeStamp"/>] ;
|
||||
@@ -605,6 +613,7 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM
|
||||
l_RedirectClassPerFileToMain = .F.
|
||||
l_NoTimestamps = .T.
|
||||
l_ClearUniqueID = .T.
|
||||
l_ClearDBFLastUpdate = .T.
|
||||
l_OptimizeByFilestamp = .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
|
||||
@@ -614,6 +623,7 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM
|
||||
n_ClassTimeStamp = 1130668032 && 2013/11/04 20:00:00
|
||||
n_CFG_Actual = 0
|
||||
n_ID = 0
|
||||
n_FileHandle = 0
|
||||
o_Conversor = NULL
|
||||
o_Frm_Avance = NULL
|
||||
o_FSO = NULL
|
||||
@@ -784,6 +794,15 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM
|
||||
ENDPROC
|
||||
|
||||
|
||||
PROCEDURE l_ClearDBFLastUpdate_ACCESS
|
||||
IF THIS.n_CFG_Actual = 0 OR ISNULL( THIS.o_Configuration( THIS.n_CFG_Actual ) )
|
||||
RETURN THIS.l_ClearDBFLastUpdate
|
||||
ELSE
|
||||
RETURN NVL( THIS.o_Configuration( THIS.n_CFG_Actual ).l_ClearDBFLastUpdate, THIS.l_ClearDBFLastUpdate )
|
||||
ENDIF
|
||||
ENDPROC
|
||||
|
||||
|
||||
PROCEDURE l_OptimizeByFilestamp_ACCESS
|
||||
IF THIS.n_CFG_Actual = 0 OR ISNULL( THIS.o_Configuration( THIS.n_CFG_Actual ) )
|
||||
RETURN THIS.l_OptimizeByFilestamp
|
||||
@@ -1313,6 +1332,13 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM
|
||||
.writeLog( JUSTFNAME(lcConfigFile) + ' > ClearUniqueID: ' + TRANSFORM(lcValue) )
|
||||
ENDIF
|
||||
|
||||
CASE LEFT( laConfig(I), 19 ) == LOWER('ClearDBFLastUpdate:')
|
||||
lcValue = ALLTRIM( SUBSTR( laConfig(I), 20 ) )
|
||||
IF INLIST( lcValue, '0', '1' ) THEN
|
||||
lo_CFG.l_ClearDBFLastUpdate = ( TRANSFORM(lcValue) == '1' )
|
||||
.writeLog( JUSTFNAME(lcConfigFile) + ' > ClearDBFLastUpdate: ' + TRANSFORM(lcValue) )
|
||||
ENDIF
|
||||
|
||||
CASE LEFT( laConfig(I), 20 ) == LOWER('OptimizeByFilestamp:')
|
||||
lcValue = ALLTRIM( SUBSTR( laConfig(I), 21 ) )
|
||||
IF NOT INLIST( TRANSFORM(tcOptimizeByFilestamp), '0', '1' ) AND INLIST( lcValue, '0', '1' ) THEN
|
||||
@@ -1516,6 +1542,84 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM
|
||||
ENDPROC
|
||||
|
||||
|
||||
FUNCTION FilesComparedAreEqual
|
||||
*---------------------------------------------------------------------------------------------------
|
||||
* PAR<41>METROS: (v=Pasar por valor | @=Pasar por referencia) (!=Obligatorio | ?=Opcional) (IN/OUT)
|
||||
* tcFilename1 (v! IN ) Nombre del archivo1 a comparar
|
||||
* tcFilename2 (v! IN ) Nombre del archivo2 a comparar
|
||||
* tcStrFileName2 (v! IN ) ***NO IMPLEMENTADO*** Contenido del archivo2 a comparar
|
||||
*---------------------------------------------------------------------------------------------------
|
||||
LPARAMETERS tcFilename1, tcFilename2, tcStrFileName2
|
||||
|
||||
LOCAL lnComparacion, lnLen1, lnLen2, lnHandle1, lnHandle2, lnTipoComp, lnChunkSize ;
|
||||
, loEx as Exception
|
||||
|
||||
TRY
|
||||
STORE -1 TO lnComparacion, lnHandle1, lnHandle2
|
||||
lnTipoComp = 0
|
||||
lnChunkSize = 65535
|
||||
|
||||
DO CASE
|
||||
CASE NOT EMPTY(tcFilename1) AND NOT EMPTY(tcFilename2)
|
||||
lnTipoComp = 1
|
||||
lnHandle1 = FOPEN( tcFilename1 )
|
||||
|
||||
IF lnHandle1 = -1
|
||||
EXIT
|
||||
ENDIF
|
||||
|
||||
lnHandle2 = FOPEN( tcFilename2 )
|
||||
|
||||
IF lnHandle2 = -1
|
||||
EXIT
|
||||
ENDIF
|
||||
|
||||
lnLen1 = FSEEK( lnHandle1, 0, 2 )
|
||||
lnLen2 = FSEEK( lnHandle2, 0, 2 )
|
||||
|
||||
*-- Comparaci<63>n de tama<6D>o
|
||||
IF lnLen1 <> lnLen2 THEN
|
||||
lnComparacion = 0 && Son distintos
|
||||
EXIT
|
||||
ENDIF
|
||||
|
||||
*-- Comparaci<63>n de contenido
|
||||
FSEEK( lnHandle1, 0, 0 )
|
||||
FSEEK( lnHandle2, 0, 0 )
|
||||
|
||||
DO WHILE NOT ( FEOF(lnHandle1) OR FEOF(lnHandle2) )
|
||||
IF NOT SYS( 2007, FREAD( lnHandle1, lnChunkSize ), -1, 1 ) == SYS( 2007, FREAD( lnHandle2, lnChunkSize ), -1, 1 ) THEN
|
||||
lnComparacion = 0 && Son distintos
|
||||
EXIT
|
||||
ENDIF
|
||||
ENDDO
|
||||
|
||||
IF lnComparacion = 0 THEN
|
||||
EXIT
|
||||
ENDIF
|
||||
|
||||
lnComparacion = 1 && Son iguales
|
||||
|
||||
ENDCASE
|
||||
|
||||
CATCH TO loEx
|
||||
lnComparacion = -1 && Error
|
||||
THROW
|
||||
|
||||
FINALLY
|
||||
DO CASE
|
||||
CASE lnTipoComp = 1
|
||||
FCLOSE( lnHandle1 )
|
||||
FCLOSE( lnHandle2 )
|
||||
|
||||
ENDCASE
|
||||
|
||||
ENDTRY
|
||||
|
||||
RETURN lnComparacion
|
||||
ENDFUNC
|
||||
|
||||
|
||||
FUNCTION FilenameFoundInFilter
|
||||
*---------------------------------------------------------------------------------------------------
|
||||
* PAR<41>METROS: (v=Pasar por valor | @=Pasar por referencia) (!=Obligatorio | ?=Opcional) (IN/OUT)
|
||||
@@ -2446,6 +2550,30 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM
|
||||
ENDPROC
|
||||
|
||||
|
||||
*******************************************************************************************************************
|
||||
PROCEDURE RenameTmpFile2Tx2File
|
||||
LPARAMETERS tcFileName
|
||||
|
||||
LOCAL lcTmpFile, loFSO AS Scripting.FileSystemObject, loEx as Exception
|
||||
|
||||
TRY
|
||||
*loFSO = THIS.o_FSO
|
||||
lcTmpFile = tcFileName + '.TMP'
|
||||
THIS.ChangeFileAttribute( tcFileName, '+N' )
|
||||
ERASE (tcFileName)
|
||||
RENAME (lcTmpFile) TO (tcFileName)
|
||||
|
||||
CATCH TO loEx
|
||||
THROW
|
||||
|
||||
FINALLY
|
||||
*loFSO = NULL
|
||||
ENDTRY
|
||||
|
||||
RETURN
|
||||
ENDPROC
|
||||
|
||||
|
||||
*******************************************************************************************************************
|
||||
PROCEDURE writeErrorLog
|
||||
LPARAMETERS tcText
|
||||
@@ -6218,7 +6346,7 @@ DEFINE CLASS c_conversor_prg_a_bin AS c_conversor_base
|
||||
lnItem = 0
|
||||
|
||||
FOR X = 1 TO toModulo._Clases_Count
|
||||
IF LOWER( toModulo._Clases(X)._objname ) == LOWER( toModulo._ExternalClasses(I) )
|
||||
IF LOWER( toModulo._Clases(X)._ObjName ) == LOWER( toModulo._ExternalClasses(I) )
|
||||
lnItem = X
|
||||
EXIT
|
||||
ENDIF
|
||||
@@ -8315,7 +8443,12 @@ DEFINE CLASS c_conversor_prg_a_dbf AS c_conversor_prg_a_bin
|
||||
USE IN (SELECT(JUSTSTEM(.c_OutputFile)))
|
||||
|
||||
*-- La actualizaci<63>n de la fecha sirve para evitar diferencias al regenerar el DBF
|
||||
IF toFoxBin2Prg.l_ClearDBFLastUpdate THEN
|
||||
ldLastUpdate = EVALUATE( '{^2013/11/04}' )
|
||||
ELSE
|
||||
ldLastUpdate = EVALUATE( '{^' + toTable._LastUpdate + '}' )
|
||||
ENDIF
|
||||
|
||||
loDBFUtils.write_DBC_BackLink( .c_OutputFile, toTable._Database, ldLastUpdate )
|
||||
ENDWITH && THIS
|
||||
|
||||
@@ -12092,6 +12225,39 @@ DEFINE CLASS c_conversor_dbf_a_prg AS c_conversor_bin_a_prg
|
||||
|
||||
*-- Header
|
||||
loTable = CREATEOBJECT('CL_DBF_TABLE')
|
||||
|
||||
IF toFoxBin2Prg.DBF_Conversion_Support = 4
|
||||
*-- Exportaci<63>n de estructura y datos (para Diff solamente)
|
||||
ERASE (.c_OutputFile + '.TMP' )
|
||||
toFoxBin2Prg.n_FileHandle = FCREATE( .c_OutputFile + '.TMP' )
|
||||
|
||||
IF toFoxBin2Prg.n_FileHandle = -1 THEN
|
||||
ERROR 102, (.c_OutputFile)
|
||||
ENDIF
|
||||
|
||||
FWRITE( toFoxBin2Prg.n_FileHandle, C_FB2PRG_CODE )
|
||||
loTable.toText( ln_HexFileType, ll_FileHasCDX, ll_FileHasMemo, ll_FileIsDBC, lc_DBC_Name, .c_InputFile, lc_FileTypeDesc, @toFoxBin2Prg )
|
||||
FCLOSE( toFoxBin2Prg.n_FileHandle )
|
||||
|
||||
|
||||
*-- Genero el DB2, renombrando el TMP
|
||||
IF .l_Test
|
||||
toModulo = C_FB2PRG_CODE
|
||||
ELSE
|
||||
DO CASE
|
||||
CASE FILE(.c_OutputFile) AND toFoxBin2Prg.FilesComparedAreEqual( .c_OutputFile + '.TMP', .c_OutputFile ) = 1
|
||||
ERASE (.c_OutputFile + '.TMP')
|
||||
*.writeLog( 'El archivo de salida [' + .c_OutputFile + '] no se sobreescribe por ser igual al generado.' )
|
||||
.writeLog( TEXTMERGE(C_OUTPUT_FILE_IS_NOT_OVERWRITEN_LOC) )
|
||||
CASE toFoxBin2Prg.doBackup( .F., .T., '', '', '' ) ;
|
||||
AND toFoxBin2Prg.ChangeFileAttribute( .c_OutputFile, '-R' ) ;
|
||||
AND NOT toFoxBin2Prg.RenameTmpFile2Tx2File( .c_OutputFile )
|
||||
*ERROR 'No se puede generar el archivo [' + .c_OutputFile + '] porque es ReadOnly'
|
||||
ERROR (TEXTMERGE(C_CANT_GENERATE_FILE_BECAUSE_IT_IS_READONLY_LOC))
|
||||
ENDCASE
|
||||
ENDIF
|
||||
|
||||
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 )
|
||||
|
||||
|
||||
@@ -12102,6 +12268,8 @@ DEFINE CLASS c_conversor_dbf_a_prg AS c_conversor_bin_a_prg
|
||||
.write_OutputFile( (C_FB2PRG_CODE), .c_OutputFile, @toFoxBin2Prg )
|
||||
ENDIF
|
||||
|
||||
ENDIF
|
||||
|
||||
*-- Hook para permitir ejecuci<63>n externa (por ejemplo, para exportar datos)
|
||||
IF NOT EMPTY(toFoxBin2Prg.run_AfterCreate_DB2)
|
||||
lnSelect = SELECT()
|
||||
@@ -16841,7 +17009,7 @@ DEFINE CLASS CL_DBF_TABLE AS CL_CUS_BASE
|
||||
<<C_TABLE_I>>
|
||||
<<>> <MemoFile><<IIF( tl_FileHasMemo, FORCEEXT(tc_InputFile, 'FPT'), '' )>></MemoFile>
|
||||
<<>> <CodePage><<CPDBF('TABLABIN')>></CodePage>
|
||||
<<>> <LastUpdate><<LUPDATE('TABLABIN')>></LastUpdate>
|
||||
<<>> <LastUpdate><<IIF( toFoxBin2Prg.l_ClearDBFLastUpdate, '', LUPDATE('TABLABIN') )>></LastUpdate>
|
||||
<<>> <Database><<tc_DBC_Name>></Database>
|
||||
<<>> <FileType><<TRANSFORM(tn_HexFileType, '@0')>></FileType>
|
||||
<<>> <FileType_Descrip><<tc_FileTypeDesc>></FileType_Descrip>
|
||||
@@ -16894,8 +17062,10 @@ DEFINE CLASS CL_DBF_TABLE AS CL_CUS_BASE
|
||||
|
||||
*** DH 06/02/2014: added _Records
|
||||
loRecords = THIS._Records
|
||||
lcText = lcText + loRecords.toText(@laFields, lnFieldCount, lc_DBF_Conversion_Condition)
|
||||
|
||||
*lcText = lcText + loRecords.toText(@laFields, lnFieldCount, lc_DBF_Conversion_Condition)
|
||||
FWRITE( toFoxBin2Prg.n_FileHandle, lcText )
|
||||
loRecords.toText(@laFields, lnFieldCount, lc_DBF_Conversion_Condition, @toFoxBin2Prg)
|
||||
lcText = ''
|
||||
ENDIF
|
||||
|
||||
TEXT TO lcText ADDITIVE TEXTMERGE NOSHOW FLAGS 1+2 PRETEXT 1+2
|
||||
@@ -16903,6 +17073,11 @@ DEFINE CLASS CL_DBF_TABLE AS CL_CUS_BASE
|
||||
<<>>
|
||||
ENDTEXT
|
||||
|
||||
IF toFoxBin2Prg.DBF_Conversion_Support = 4 && BIN2PRG (DATA EXPORT FOR DIFF)
|
||||
FWRITE( toFoxBin2Prg.n_FileHandle, lcText )
|
||||
lcText = ''
|
||||
ENDIF
|
||||
|
||||
|
||||
CATCH TO loEx
|
||||
IF THIS.l_Debug AND _VFP.STARTMODE = 0
|
||||
@@ -17497,21 +17672,29 @@ DEFINE CLASS CL_DBF_RECORDS AS CL_COL_BASE
|
||||
* taFields (@! IN ) Array de informaci<63>n de campos
|
||||
* tnField_Count (v! IN ) Cantidad de campos
|
||||
* tc_DBF_Conversion_Condition (v? IN ) Condici<63>n de filtro para la conversi<73>n. Solo se exporta lo que la cumpla.
|
||||
* toFoxBin2Prg (@! IN ) Referencia de toFoxBin2Prg
|
||||
*---------------------------------------------------------------------------------------------------
|
||||
LPARAMETERS taFields, tnField_Count, tc_DBF_Conversion_Condition
|
||||
LPARAMETERS taFields, tnField_Count, tc_DBF_Conversion_Condition, toFoxBin2Prg
|
||||
|
||||
EXTERNAL ARRAY taFields
|
||||
|
||||
#IF .F.
|
||||
LOCAL toFoxBin2Prg AS c_foxbin2prg OF 'FOXBIN2PRG.PRG'
|
||||
#ENDIF
|
||||
|
||||
TRY
|
||||
LOCAL lcText, loEx AS EXCEPTION ;
|
||||
LOCAL lcText, loEx AS EXCEPTION, I ;
|
||||
, loRecord AS CL_DBF_RECORD OF 'FOXBIN2PRG.PRG'
|
||||
lcText = ''
|
||||
I = 0
|
||||
|
||||
TEXT TO lcText ADDITIVE TEXTMERGE NOSHOW FLAGS 1+2 PRETEXT 1+2
|
||||
<<>>
|
||||
<<>> <<C_RECORDS_I>>
|
||||
ENDTEXT
|
||||
|
||||
FWRITE( toFoxBin2Prg.n_FileHandle, lcText )
|
||||
lcText = ''
|
||||
loRecord = CREATEOBJECT('CL_DBF_RECORD')
|
||||
|
||||
IF EMPTY(tc_DBF_Conversion_Condition)
|
||||
@@ -17519,14 +17702,24 @@ DEFINE CLASS CL_DBF_RECORDS AS CL_COL_BASE
|
||||
ENDIF
|
||||
|
||||
SCAN FOR &tc_DBF_Conversion_Condition.
|
||||
lcText = lcText + loRecord.toText(@taFields, tnField_Count)
|
||||
I = I + 1
|
||||
lcText = loRecord.toText(@taFields, tnField_Count)
|
||||
FWRITE( toFoxBin2Prg.n_FileHandle, lcText )
|
||||
IF MOD(I,10000) = 0 THEN
|
||||
FFLUSH( toFoxBin2Prg.n_FileHandle, .T. )
|
||||
ENDIF
|
||||
ENDSCAN
|
||||
|
||||
lcText = ''
|
||||
|
||||
TEXT TO lcText ADDITIVE TEXTMERGE NOSHOW FLAGS 1+2 PRETEXT 1+2
|
||||
<<>> <<C_RECORDS_F>>
|
||||
<<>>
|
||||
ENDTEXT
|
||||
|
||||
FWRITE( toFoxBin2Prg.n_FileHandle, lcText )
|
||||
lcText = ''
|
||||
|
||||
|
||||
CATCH TO loEx
|
||||
loEx.UserValue = loEx.UserValue + 'tc_DBF_Conversion_Condition = [' + TRANSFORM(tc_DBF_Conversion_Condition) + ']' + CR_LF
|
||||
@@ -20593,6 +20786,7 @@ DEFINE CLASS CL_CFG AS CUSTOM
|
||||
+ [<memberdata name="c_vc2" display="c_VC2"/>] ;
|
||||
+ [<memberdata name="l_classperfilecheck" display="l_ClassPerFileCheck"/>] ;
|
||||
+ [<memberdata name="l_clearuniqueid" display="l_ClearUniqueID"/>] ;
|
||||
+ [<memberdata name="l_cleardbflastupdate" display="l_ClearDBFLastUpdate"/>] ;
|
||||
+ [<memberdata name="l_configevaluated" display="l_ConfigEvaluated"/>] ;
|
||||
+ [<memberdata name="l_debug" display="l_Debug"/>] ;
|
||||
+ [<memberdata name="l_methodsort_enabled" display="l_MethodSort_Enabled"/>] ;
|
||||
@@ -20633,6 +20827,7 @@ DEFINE CLASS CL_CFG AS CUSTOM
|
||||
l_Recompile = NULL
|
||||
l_NoTimestamps = NULL
|
||||
l_ClearUniqueID = NULL
|
||||
l_ClearDBFLastUpdate = NULL
|
||||
l_OptimizeByFilestamp = NULL
|
||||
l_RedirectClassPerFileToMain = NULL
|
||||
l_UseClassPerFile = NULL
|
||||
|
||||
Reference in New Issue
Block a user