Changeset: 399 fdbozzo - 09/08/2014 14:39:34:

- Agregado caso de prueba para orden de métodos (basado en el enviado por Ryan)
- Limpieza de código
- Actualización de historial en header foxbin2prg.prg
This commit is contained in:
fdbozzo
2014-08-10 11:01:05 +02:00
parent 965926e135
commit dc5f469354
8 changed files with 128 additions and 179 deletions

View File

@@ -97,6 +97,7 @@
* 21/07/2014 FDBOZZO v1.19.28 Mejora: Agregada funcionalidad para filtrado de tablas y datos cuando se elige DBF_Conversion_Support:4 (Edyshor)
* 29/07/2014 FDBOZZO v1.19.29 Arreglo bug vcx/scx: Un campo de tabla llamado "text" que comienza la l<>nea puede confundirse con la estructura TEXT/ENDTEXT y reconocer mal el resto del c<>digo
* 07/08/2014 FDBOZZO v1.19.30 Arreglo bug vcx/scx: Cuando la l<>nea anterior a un ENDTEXT termina en ";" o "," no se reconoce como ENDTEXT sino como continuaci<63>n (Jim Nelson)
* 08/08/2014 FDBOZZO v1.19.30 Arreglo bug vcx/vct v1.19.29: En ciertos casos de herencia no se mantiene el orden alfabetico de algunos metodos (Ryan Harris)
* </HISTORIAL DE CAMBIOS Y NOTAS IMPORTANTES>
*
*---------------------------------------------------------------------------------------------------
@@ -137,6 +138,7 @@
* 21/07/2014 Edyshor PROPUESTA DE MEJORA db2 v1.19.27: Ser<65>a <20>til poder filtrar tablas y datos cuando se elige DBF_Conversion_Support:4 (Agregado en v1.19.28)
* 29/07/2014 M_N_M REPORTE BUG vcx/scx v1.19.28: Los campos de tabla con nombre "text" a veces provocan corrupci<63>n del binario generado (Arreglado en v1.19.29)
* 07/08/2014 Jim Nelson REPORTE BUG vcx/scx v1.19.29: Cuando la l<>nea anterior a un ENDTEXT termina en ";" o "," no se reconoce como ENDTEXT sino como continuaci<63>n (Arreglado en v1.19.30)
* 08/08/2014 Ryan Harris REPORTE BUG vcx/vct v1.19.29: En ciertos casos de herencia no se mantiene el orden alfabetico de algunos metodos (solucionado en v1.19.30)
* </TESTEO Y REPORTE DE BUGS (AGRADECIMIENTOS)>
*
*---------------------------------------------------------------------------------------------------
@@ -1131,9 +1133,9 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM
IF .l_AllowMultiConfig AND .l_ConfigEvaluated AND .l_Main_CFG_Loaded
lo_CFG = CREATEOBJECT('CL_CFG')
lo_Configuration.Add( lo_CFG, lc_CFG_Path )
lo_Configuration.Add( lo_CFG, lc_CFG_Path )
ELSE
lo_Configuration.Add( NULL, lc_CFG_Path )
lo_Configuration.Add( NULL, lc_CFG_Path )
ENDIF
FOR I = 1 TO ALINES( laConfig, FILETOSTR( lcConfigFile ), 1+4 )
@@ -1290,8 +1292,8 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM
ENDCASE
ENDFOR
IF .l_AllowMultiConfig AND .l_Main_CFG_Loaded AND lo_Configuration.Count > 0
.n_CFG_Actual = lo_Configuration.Count &&lo_Configuration.GetKey( UPPER( JUSTPATH( lcConfigFile ) ) )
IF .l_AllowMultiConfig AND .l_Main_CFG_Loaded AND lo_Configuration.Count > 0
.n_CFG_Actual = lo_Configuration.Count &&lo_Configuration.GetKey( UPPER( JUSTPATH( lcConfigFile ) ) )
ENDIF
ENDIF && llExisteConfig
@@ -1378,18 +1380,18 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM
* tcFilename (v! IN ) Nombre del archivo a evaluar
* tcFilters (v! IN ) Filtros a evaluar (*,??E.*,R*.*)
*---------------------------------------------------------------------------------------------------
LPARAMETERS tcFilename, tcFilters
LPARAMETERS tcFileName, tcFilters
LOCAL llFound, laFiltros(1)
tcFilename = UPPER(tcFilename)
tcFileName = UPPER(tcFileName)
FOR I = 1 TO ALINES( laFiltros, tcFilters + ',', 1+4, ',' )
IF LIKE( UPPER(laFiltros(I)), tcFilename )
IF LIKE( UPPER(laFiltros(I)), tcFileName )
llFound = .T.
EXIT
ENDIF
ENDFOR
RETURN llFound
ENDFUNC
@@ -2718,8 +2720,8 @@ DEFINE CLASS c_conversor_base AS SESSION
RETURN llEncontrado
ENDPROC
PROCEDURE decode_SpecialCodes_1_31
*---------------------------------------------------------------------------------------------------
* PAR<41>METROS: (v=Pasar por valor | @=Pasar por referencia) (!=Obligatorio | ?=Opcional) (IN/OUT)
@@ -3035,7 +3037,7 @@ DEFINE CLASS c_conversor_base AS SESSION
* tcAsignacion (v! IN ) Asignaci<63>n completa con variable, igualdad y valor
* tcPropName (@! OUT) Nombre de la variable
* tcValue (@? OUT) Valor
* toClase (v! IN )
* toClase (v! IN )
* taCodeLines (@! IN ) L<>neas de c<>digo a analizar
* tnCodeLines (v! IN ) Cantidad de l<>neas de c<>digo
* I (@! IN/OUT) L<>nea actual
@@ -4618,11 +4620,11 @@ DEFINE CLASS c_conversor_prg_a_bin AS c_conversor_base
lcPropsMemo = .objectProps2Memo( toObjeto, toClase )
lcMethodsMemo = .objectMethods2Memo( toObjeto, toClase )
IF EMPTY(toObjeto._TIMESTAMP)
toObjeto._TIMESTAMP = THIS.RowTimeStamp(DATETIME())
IF EMPTY(toObjeto._TimeStamp)
toObjeto._TimeStamp = THIS.RowTimeStamp(DATETIME())
ENDIF
IF EMPTY(toObjeto._UNIQUEID)
toObjeto._UNIQUEID = SYS(2015)
IF EMPTY(toObjeto._UniqueID)
toObjeto._UniqueID = SYS(2015)
ENDIF
*-- Inserto el objeto
@@ -4703,11 +4705,11 @@ DEFINE CLASS c_conversor_prg_a_bin AS c_conversor_base
FOR X = 1 TO toClase._AddObject_Count
loObjeto = toClase._AddObjects( X )
IF EMPTY(loObjeto._TIMESTAMP)
loObjeto._TIMESTAMP = THIS.RowTimeStamp(DATETIME())
IF EMPTY(loObjeto._TimeStamp)
loObjeto._TimeStamp = THIS.RowTimeStamp(DATETIME())
ENDIF
IF EMPTY(loObjeto._UNIQUEID)
loObjeto._UNIQUEID = SYS(2015)
IF EMPTY(loObjeto._UniqueID)
loObjeto._UniqueID = SYS(2015)
ENDIF
laObjNames( X, 1 ) = loObjeto._Nombre
@@ -5875,11 +5877,11 @@ DEFINE CLASS c_conversor_prg_a_vcx AS c_conversor_prg_a_bin
LOOP
ENDIF
IF EMPTY(loClase._TIMESTAMP)
loClase._TIMESTAMP = THIS.RowTimeStamp(DATETIME())
IF EMPTY(loClase._TimeStamp)
loClase._TimeStamp = THIS.RowTimeStamp(DATETIME())
ENDIF
IF EMPTY(loClase._UNIQUEID)
loClase._UNIQUEID = SYS(2015)
IF EMPTY(loClase._UniqueID)
loClase._UniqueID = SYS(2015)
ENDIF
*-- Inserto la clase
@@ -6178,11 +6180,11 @@ DEFINE CLASS c_conversor_prg_a_scx AS c_conversor_prg_a_bin
LOOP
ENDIF
IF EMPTY(loClase._TIMESTAMP)
loClase._TIMESTAMP = THIS.RowTimeStamp(DATETIME())
IF EMPTY(loClase._TimeStamp)
loClase._TimeStamp = THIS.RowTimeStamp(DATETIME())
ENDIF
IF EMPTY(loClase._UNIQUEID)
loClase._UNIQUEID = SYS(2015)
IF EMPTY(loClase._UniqueID)
loClase._UniqueID = SYS(2015)
ENDIF
*-- Inserto la clase
@@ -6417,8 +6419,8 @@ DEFINE CLASS c_conversor_prg_a_pjx AS c_conversor_prg_a_bin
lcMainProg = LOWER( SYS(2014, toProject._MainProg, ADDBS(toProject._HomeDir) ) )
ENDIF
IF EMPTY(toProject._TIMESTAMP)
toProject._TIMESTAMP = THIS.RowTimeStamp(DATETIME())
IF EMPTY(toProject._TimeStamp)
toProject._TimeStamp = THIS.RowTimeStamp(DATETIME())
ENDIF
IF EMPTY(toProject._ID)
toProject._ID = INT(VAL(SYS(3)))
@@ -6457,8 +6459,8 @@ DEFINE CLASS c_conversor_prg_a_pjx AS c_conversor_prg_a_bin
*-- Agrego los ARCHIVOS
FOR EACH loFile IN toProject FOXOBJECT
IF EMPTY(loFile._TIMESTAMP)
loFile._TIMESTAMP = THIS.RowTimeStamp(DATETIME())
IF EMPTY(loFile._TimeStamp)
loFile._TimeStamp = THIS.RowTimeStamp(DATETIME())
ENDIF
IF EMPTY(loFile._ID)
loFile._ID = INT(VAL(SYS(3)))
@@ -8185,7 +8187,6 @@ DEFINE CLASS c_conversor_bin_a_prg AS c_conversor_base
+ [<memberdata name="write_all_object_methods" display="write_ALL_OBJECT_METHODS"/>] ;
+ [<memberdata name="write_cabecera_reporte" display="write_CABECERA_REPORTE"/>] ;
+ [<memberdata name="write_classmetadata" display="write_CLASSMETADATA"/>] ;
+ [<memberdata name="write_class_methods" display="write_CLASS_METHODS"/>] ;
+ [<memberdata name="write_class_properties" display="write_CLASS_PROPERTIES"/>] ;
+ [<memberdata name="write_dataenvironment_reporte" display="write_DATAENVIRONMENT_REPORTE"/>] ;
+ [<memberdata name="write_dbc_header" display="write_DBC_HEADER"/>] ;
@@ -8274,10 +8275,6 @@ DEFINE CLASS c_conversor_bin_a_prg AS c_conversor_base
ENDIF
*-- Genero el m<>todo SIN indentar, ya que se hace luego
*-- Sustituyo el TEXT/ENDTEXT aqu<71> porque a veces quita espacios de la derecha, y eso es peligroso
*tcMethods = tcMethods + CR_LF + 'PROCEDURE ' + lcMethodName
*tcMethods = tcMethods + CR_LF + .IndentarMemo( taCode(taMethods(I,2)) )
*tcMethods = tcMethods + CR_LF + 'ENDPROC'
taCode(taMethods(I,2)) = 'PROCEDURE ' + lcMethodName + CR_LF + .IndentarMemo( taCode(taMethods(I,2)) ) + CR_LF + 'ENDPROC'
taMethods(I,1) = lcMethodName
ENDFOR
@@ -8331,25 +8328,15 @@ DEFINE CLASS c_conversor_bin_a_prg AS c_conversor_base
lnCommentRow = ASCAN( taPropsAndComments, '*' + lcMethodName, 1, 0, 1, 1+2+4+8)
*-- Nombre del m<>todo
*TEXT TO lcMethods ADDITIVE TEXTMERGE NOSHOW FLAGS 1+2 PRETEXT 1+2
* <<>> <<lcProcDef>> <<taMethods(I,1)>>
*ENDTEXT
*lcMethods = lcMethods + CR_LF + lcProcDef + ' ' + taMethods(I,1)
lcMethod = lcProcDef + ' ' + taMethods(I,1)
*-- Comentarios del m<>todo (si tiene)
IF lnCommentRow > 0 AND NOT EMPTY(taPropsAndComments(lnCommentRow,2))
*TEXT TO lcMethods ADDITIVE TEXTMERGE NOSHOW FLAGS 1 PRETEXT 1+2
* <<>> && <<taPropsAndComments(lnCommentRow,2)>>
*ENDTEXT
*lcMethods = lcMethods + C_TAB + C_TAB + taPropsAndComments(lnCommentRow,2)
lcMethod = lcMethod + C_TAB + C_TAB + '&' + '& ' + taPropsAndComments(lnCommentRow,2)
ENDIF
*-- C<>digo del m<>todo
IF taMethods(I,2) > 0 THEN
*lcMethods = lcMethods + CR_LF + .IndentarMemo( taCode(taMethods(I,2)), C_TAB + C_TAB )
*lcMethod = lcMethod + CR_LF + .IndentarMemo( taCode(taMethods(I,2)), C_TAB + C_TAB )
taCode(taMethods(I,2)) = lcMethod + CR_LF + .IndentarMemo( taCode(taMethods(I,2)) ) + CR_LF + 'ENDPROC'
ELSE
lnLen = ALEN(taCode,1) + 1
@@ -8357,18 +8344,8 @@ DEFINE CLASS c_conversor_bin_a_prg AS c_conversor_base
taCode( lnLen ) = lcMethod + CR_LF + 'ENDPROC'
taMethods(I,2) = lnLen
ENDIF
*lcMethods = lcMethods + CR_LF + C_TAB + 'ENDPROC'
*lcMethods = lcMethods + CR_LF
*lcMethod = lcMethod + CR_LF + C_TAB + 'ENDPROC'
*lcMethod = lcMethod + CR_LF
*lcMethods = lcMethods + lcMethod
ENDFOR
ENDWITH && THIS
*C_FB2PRG_CODE = C_FB2PRG_CODE + C_TAB + lcMethods &&+ CR_LF
ENDIF
CATCH TO loEx
@@ -8593,7 +8570,7 @@ DEFINE CLASS c_conversor_bin_a_prg AS c_conversor_base
tnProtected_Count = tnProtected_Count - 1
ENDIF
ENDFOR
DIMENSION taProtected(tnProtected_Count)
ENDIF
@@ -8754,12 +8731,6 @@ DEFINE CLASS c_conversor_bin_a_prg AS c_conversor_base
ASORT(taMethods,1,-1,0,1)
ENDIF
*FOR I = 1 TO tnMethodCount
* IF taMethods(I,2) > 0 THEN
* tcSorted = m.tcSorted + taCode( taMethods(I,2) )
* ENDIF
*ENDFOR
DIMENSION laMethods(tnMethodCount,3)
lnDeleted = 0
@@ -8812,29 +8783,24 @@ DEFINE CLASS c_conversor_bin_a_prg AS c_conversor_base
*-- ESTRUCTURA DE LOS ARRAYS CREADOS:
*-- taMethods[1,3]
*-- Nombre M<>todo
*-- Posici<63>n Original
*-- Tipo (HIDDEN/PROTECTED/NORMAL)
*-- 1.Nombre M<>todo
*-- 2.Posici<EFBFBD>n Original
*-- 3.Tipo (HIDDEN/PROTECTED/NORMAL)
*-- taCode[1]
*-- Bloque de c<>digo del m<>todo en su posici<63>n original
*-- 1.Bloque de c<>digo del m<>todo en su posici<63>n original
TRY
LOCAL lnLineCount, laLine(1), I, lnTextNodes, tcSorted, lnProtectedLine, lcMethod, lnLine_Len, lcLine, llProcOpen ;
, laLineasExclusion(1), lnBloquesExclusion ;
, loEx AS EXCEPTION
*DIMENSION taMethods(1,3)
*STORE '' TO taMethods, tcSorted, taCode
*tnMethodCount = 0
IF NOT EMPTY(m.tcMethod) AND LEFT(m.tcMethod,9) == "ENDPROC"+CHR(13)+CHR(10)
tcMethod = SUBSTR(m.tcMethod,10)
ENDIF
IF NOT EMPTY(m.tcMethod)
DIMENSION laLine(1) &&, taMethods(1,3)
DIMENSION laLine(1)
STORE '' TO laLine
STORE 0 TO lnTextNodes
*STORE '' TO taMethods, taCode
*STORE 0 TO tnMethodCount
lnLineCount = ALINES(laLine, m.tcMethod) && NO aplicar nung<6E>n formato ni limpieza, que es el C<>DIGO FUENTE
@@ -8869,7 +8835,7 @@ DEFINE CLASS c_conversor_bin_a_prg AS c_conversor_base
*-- Identifico los TEXT/ENDTEXT, #IF .F./#ENDIF
THIS.identificarBloquesDeExclusion( @laLine, lnLineCount, .F., @laLineasExclusion, @lnBloquesExclusion )
*-- Analyze and count line methods, get method names and consolidate block code
FOR I = 1 TO lnLineCount
IF toFoxBin2Prg.l_DropNullCharsFromCode
@@ -8881,7 +8847,7 @@ DEFINE CLASS c_conversor_bin_a_prg AS c_conversor_base
DO CASE
CASE laLineasExclusion(I)
taCode(tnMethodCount) = taCode(tnMethodCount) + laLine(I) + CR_LF
CASE lnTextNodes = 0 AND UPPER( LEFT(laLine(I), 10) ) == 'PROCEDURE '
tnMethodCount = tnMethodCount + 1
DIMENSION taMethods(tnMethodCount, 3), taCode(tnMethodCount)
@@ -9057,7 +9023,7 @@ DEFINE CLASS c_conversor_bin_a_prg AS c_conversor_base
*-- Finalmente, todos los m<>todos los ordeno y escribo juntos
LOCAL laMethods(1), laCode(1), lnMethodCount, I, lcMethods
IF tnMethodCount > 0 THEN
IF tnMethodCount > 0 THEN
STORE '' TO lcMethods
DIMENSION laMethods(1,3)
@@ -9074,10 +9040,6 @@ DEFINE CLASS c_conversor_bin_a_prg AS c_conversor_base
LOOP
ENDIF
*lcMethods = lcMethods + CR_LF + C_TAB + laMethods(I,3) + C_PROCEDURE + ' ' + laMethods(I,1)
*lcMethods = lcMethods + CR_LF + .IndentarMemo( laCode(laMethods(I,2)), CHR(9) + CHR(9) )
*lcMethods = lcMethods + CR_LF + C_TAB + C_ENDPROC
lcMethods = lcMethods + CR_LF + .IndentarMemo( taCode(taMethods(I,2)), CHR(9) + CHR(9), .T. )
lcMethods = lcMethods + CR_LF
ENDFOR
@@ -9090,86 +9052,6 @@ DEFINE CLASS c_conversor_bin_a_prg AS c_conversor_base
ENDPROC
*******************************************************************************************************************
PROCEDURE write_CLASS_METHODS
LPARAMETERS tnMethodCount, taMethods, taCode, taProtected, taPropsAndComments
*-- DEFINIR M<>TODOS DE LA CLASE
*-- Ubico los m<>todos protegidos y les cambio la definici<63>n
EXTERNAL ARRAY taMethods, taCode, taProtected, taPropsAndComments
TRY
LOCAL lcMethod, lcMethodName, lnProtectedItem, lnCommentRow, lcProcDef, lcMethods
STORE '' TO lcMethod, lcMethodName, lcProcDef, lcMethods
IF tnMethodCount > 0 THEN
WITH THIS AS c_conversor_bin_a_prg OF 'FOXBIN2PRG.PRG'
FOR I = 1 TO tnMethodCount
lcMethodName = CHRTRAN( taMethods(I,1), '^', '' )
lnProtectedItem = ASCAN( taProtected, taMethods(I,1), 1, 0, 0, 1+2+4)
IF lnProtectedItem = 0
lnProtectedItem = ASCAN( taProtected, taMethods(I,1) + '^', 1, 0, 0, 1+2+4)
IF lnProtectedItem = 0
*-- M<>todo com<6F>n
lcProcDef = 'PROCEDURE'
ELSE
*-- M<>todo oculto
lcProcDef = 'HIDDEN PROCEDURE'
ENDIF
ELSE
*-- M<>todo protegido
lcProcDef = 'PROTECTED PROCEDURE'
ENDIF
lnCommentRow = ASCAN( taPropsAndComments, '*' + lcMethodName, 1, 0, 1, 1+2+4+8)
*-- Nombre del m<>todo
*TEXT TO lcMethods ADDITIVE TEXTMERGE NOSHOW FLAGS 1+2 PRETEXT 1+2
* <<>> <<lcProcDef>> <<taMethods(I,1)>>
*ENDTEXT
*lcMethods = lcMethods + CR_LF + lcProcDef + ' ' + taMethods(I,1)
lcMethod = CR_LF + lcProcDef + ' ' + taMethods(I,1)
*-- Comentarios del m<>todo (si tiene)
IF lnCommentRow > 0 AND NOT EMPTY(taPropsAndComments(lnCommentRow,2))
*TEXT TO lcMethods ADDITIVE TEXTMERGE NOSHOW FLAGS 1 PRETEXT 1+2
* <<>> && <<taPropsAndComments(lnCommentRow,2)>>
*ENDTEXT
*lcMethods = lcMethods + C_TAB + C_TAB + taPropsAndComments(lnCommentRow,2)
lcMethod = lcMethod + C_TAB + C_TAB + taPropsAndComments(lnCommentRow,2)
ENDIF
*-- C<>digo del m<>todo
IF taMethods(I,2) > 0 THEN
*lcMethods = lcMethods + CR_LF + .IndentarMemo( taCode(taMethods(I,2)), C_TAB + C_TAB )
lcMethod = lcMethod + CR_LF + .IndentarMemo( taCode(taMethods(I,2)), C_TAB + C_TAB )
ENDIF
*lcMethods = lcMethods + CR_LF + C_TAB + 'ENDPROC'
*lcMethods = lcMethods + CR_LF
lcMethod = lcMethod + CR_LF + C_TAB + 'ENDPROC'
lcMethod = lcMethod + CR_LF
lcMethods = lcMethods + lcMethod
ENDFOR
ENDWITH && THIS
C_FB2PRG_CODE = C_FB2PRG_CODE + C_TAB + lcMethods &&+ CR_LF
ENDIF
CATCH TO loEx
IF THIS.l_Debug AND _VFP.STARTMODE = 0
SET STEP ON
ENDIF
THROW
ENDTRY
RETURN
ENDPROC
*******************************************************************************************************************
PROCEDURE write_CLASS_PROPERTIES
LPARAMETERS toRegClass, taPropsAndValues, taPropsAndComments, taProtected ;
@@ -10144,7 +10026,6 @@ DEFINE CLASS c_conversor_vcx_a_prg AS c_conversor_bin_a_prg
.Method2Array( loRegClass.METHODS, @laMethods, @laCode, '', @lnMethodCount ;
, @laPropsAndComments, lnPropsAndComments_Count, @laProtected, lnProtected_Count, @toFoxBin2Prg )
*.write_CLASS_METHODS( @lnMethodCount, @laMethods, @laCode, @laProtected, @laPropsAndComments )
.get_CLASS_METHODS( @lnMethodCount, @laMethods, @laCode, @laProtected, @laPropsAndComments )
lnLastClass = 1
@@ -10388,7 +10269,6 @@ DEFINE CLASS c_conversor_scx_a_prg AS c_conversor_bin_a_prg
.Method2Array( loRegClass.METHODS, @laMethods, @laCode, '', @lnMethodCount ;
, @laPropsAndComments, lnPropsAndComments_Count, @laProtected, lnProtected_Count, @toFoxBin2Prg )
*.write_CLASS_METHODS( @lnMethodCount, @laMethods, @laCode, @laProtected, @laPropsAndComments )
.get_CLASS_METHODS( @lnMethodCount, @laMethods, @laCode, @laProtected, @laPropsAndComments )
lnLastClass = 1
@@ -11405,7 +11285,7 @@ DEFINE CLASS c_conversor_dbf_a_prg AS c_conversor_bin_a_prg
toFoxBin2Prg.writeLog(' ' + JUSTFNAME(.c_InputFile) + ' est<73> en el filtro DBF_Conversion_Excluded (' + toFoxBin2Prg.DBF_Conversion_Excluded + ')' )
EXIT
ENDIF
loDBFUtils.getDBFmetadata( .c_InputFile, @ln_HexFileType, @ll_FileHasCDX, @ll_FileHasMemo, @ll_FileIsDBC, @lc_DBC_Name )
lc_FileTypeDesc = loDBFUtils.fileTypeDescription(ln_HexFileType)
lnDatabases_Count = ADATABASES(laDatabases)
@@ -16206,7 +16086,7 @@ DEFINE CLASS CL_DBF_TABLE AS CL_CUS_BASE
IF FILE(lcTableCFG)
toFoxBin2Prg.writeLog()
toFoxBin2Prg.writeLog('* Found configuration file: ' + lcTableCFG)
*-- Leer valores de configuraci<63>n
FOR I = 1 TO ALINES( laConfig, FILETOSTR( lcTableCFG ), 1+4 )
lcConfigItem = LOWER( laConfig(I) )
@@ -16225,15 +16105,15 @@ DEFINE CLASS CL_DBF_TABLE AS CL_CUS_BASE
ENDCASE
ENDFOR
IF NOT EMPTY(lc_DBF_Conversion_Order)
lcIndexFile = FORCEEXT(tc_InputFile,'IDX')
INDEX ON &lc_DBF_Conversion_Order. TO (lcIndexFile) COMPACT
toFoxBin2Prg.writeLog(' > Using Index order key: ' + lc_DBF_Conversion_Order)
ENDIF
ENDIF
*** DH 06/02/2014: added _Records
loRecords = THIS._Records
lcText = lcText + loRecords.toText(@laFields, lnFieldCount, lc_DBF_Conversion_Condition)
@@ -16855,7 +16735,7 @@ DEFINE CLASS CL_DBF_RECORDS AS CL_COL_BASE
ENDTEXT
loRecord = CREATEOBJECT('CL_DBF_RECORD')
IF EMPTY(tc_DBF_Conversion_Condition)
tc_DBF_Conversion_Condition = '.T.'
ENDIF