Changeset: 361 fdbozzo - 14/07/2014 18:20:21:
Optimizaciones sobre el código de Doug Hennig
This commit is contained in:
112
foxbin2prg.prg
112
foxbin2prg.prg
@@ -272,7 +272,7 @@ LPARAMETERS tc_InputFile, tcType, tcTextName, tlGenText, tcDontShowErrors, tcDeb
|
|||||||
*** DH 06/02/2014: added additional constants
|
*** DH 06/02/2014: added additional constants
|
||||||
#DEFINE C_RECORDS_I '<RECORDS>'
|
#DEFINE C_RECORDS_I '<RECORDS>'
|
||||||
#DEFINE C_RECORDS_F '</RECORDS>'
|
#DEFINE C_RECORDS_F '</RECORDS>'
|
||||||
#DEFINE C_RECORD_I '<RECORD>'
|
#DEFINE C_RECORD_I '<RECORD num="##">' && *** FDBOZZO 2014/07/15: Optimized RECORD tag adding num property to not use REGNUM field
|
||||||
#DEFINE C_RECORD_F '</RECORD>'
|
#DEFINE C_RECORD_F '</RECORD>'
|
||||||
#DEFINE C_RECNO_I '<RECNO>'
|
#DEFINE C_RECNO_I '<RECNO>'
|
||||||
#DEFINE C_RECNO_F '</RECNO>'
|
#DEFINE C_RECNO_F '</RECNO>'
|
||||||
@@ -11726,13 +11726,13 @@ DEFINE CLASS CL_DBC_COL_BASE AS CL_COL_BASE
|
|||||||
* tnParentID (v! IN ) ID del objeto Padre
|
* tnParentID (v! IN ) ID del objeto Padre
|
||||||
*---------------------------------------------------------------------------------------------------
|
*---------------------------------------------------------------------------------------------------
|
||||||
LPARAMETERS tc_OutputFile, tnLastID, tnParentID
|
LPARAMETERS tc_OutputFile, tnLastID, tnParentID
|
||||||
LOCAL loObject
|
LOCAL loObject
|
||||||
loObject = NULL
|
loObject = NULL
|
||||||
|
|
||||||
FOR EACH loObject IN THIS FOXOBJECT
|
FOR EACH loObject IN THIS FOXOBJECT
|
||||||
loObject.updateDBC( tc_OutputFile, @tnLastID, tnParentID )
|
loObject.updateDBC( tc_OutputFile, @tnLastID, tnParentID )
|
||||||
loObject = NULL
|
loObject = NULL
|
||||||
ENDFOR
|
ENDFOR
|
||||||
|
|
||||||
RETURN
|
RETURN
|
||||||
ENDPROC
|
ENDPROC
|
||||||
@@ -15288,7 +15288,7 @@ DEFINE CLASS CL_DBF_TABLE AS CL_CUS_BASE
|
|||||||
*--
|
*--
|
||||||
THIS.ADDOBJECT("_Fields", "CL_DBF_FIELDS")
|
THIS.ADDOBJECT("_Fields", "CL_DBF_FIELDS")
|
||||||
THIS.ADDOBJECT("_Indexes", "CL_DBF_INDEXES")
|
THIS.ADDOBJECT("_Indexes", "CL_DBF_INDEXES")
|
||||||
*** DH 06/02/2014: added _Records
|
*** DH 06/02/2014: added _Records
|
||||||
THIS.ADDOBJECT("_Records", "CL_DBF_RECORDS")
|
THIS.ADDOBJECT("_Records", "CL_DBF_RECORDS")
|
||||||
ENDPROC
|
ENDPROC
|
||||||
|
|
||||||
@@ -15381,6 +15381,9 @@ DEFINE CLASS CL_DBF_TABLE AS CL_CUS_BASE
|
|||||||
LOCAL lcText, loEx AS EXCEPTION ;
|
LOCAL lcText, loEx AS EXCEPTION ;
|
||||||
, loFields AS CL_DBF_FIELDS OF 'FOXBIN2PRG.PRG' ;
|
, loFields AS CL_DBF_FIELDS OF 'FOXBIN2PRG.PRG' ;
|
||||||
, loIndexes AS CL_DBF_INDEXES OF 'FOXBIN2PRG.PRG'
|
, loIndexes AS CL_DBF_INDEXES OF 'FOXBIN2PRG.PRG'
|
||||||
|
*** DH 06/02/2014: created variables
|
||||||
|
LOCAL laFields[1], lnFieldCount
|
||||||
|
|
||||||
STORE NULL TO loIndexes, loFields
|
STORE NULL TO loIndexes, loFields
|
||||||
lcText = ''
|
lcText = ''
|
||||||
|
|
||||||
@@ -15395,21 +15398,17 @@ DEFINE CLASS CL_DBF_TABLE AS CL_CUS_BASE
|
|||||||
<<>> <FileType_Descrip><<tc_FileTypeDesc>></FileType_Descrip>
|
<<>> <FileType_Descrip><<tc_FileTypeDesc>></FileType_Descrip>
|
||||||
ENDTEXT
|
ENDTEXT
|
||||||
|
|
||||||
*** DH 06/02/2014: created variables
|
|
||||||
local laFields[1], lnFieldCount
|
|
||||||
|
|
||||||
*-- Fields
|
*-- Fields
|
||||||
loFields = THIS._Fields
|
loFields = THIS._Fields
|
||||||
*** DH 06/02/2014: passed variables to toText
|
*** DH 06/02/2014: passed variables to toText
|
||||||
* lcText = lcText + loFields.toText()
|
|
||||||
lcText = lcText + loFields.toText(@laFields, @lnFieldCount)
|
lcText = lcText + loFields.toText(@laFields, @lnFieldCount)
|
||||||
|
|
||||||
*-- Indexes
|
*-- Indexes
|
||||||
loIndexes = THIS._Indexes
|
loIndexes = THIS._Indexes
|
||||||
lcText = lcText + loIndexes.toText( '', '', tc_InputFile )
|
lcText = lcText + loIndexes.toText( '', '', tc_InputFile )
|
||||||
|
|
||||||
*** DH 06/02/2014: added _Records
|
*** DH 06/02/2014: added _Records
|
||||||
lcText = lcText + This._Records.toText(@laFields, lnFieldCount)
|
lcText = lcText + THIS._Records.toText(@laFields, lnFieldCount)
|
||||||
|
|
||||||
TEXT TO lcText ADDITIVE TEXTMERGE NOSHOW FLAGS 1+2 PRETEXT 1+2
|
TEXT TO lcText ADDITIVE TEXTMERGE NOSHOW FLAGS 1+2 PRETEXT 1+2
|
||||||
<<C_TABLE_F>>
|
<<C_TABLE_F>>
|
||||||
@@ -15996,7 +15995,7 @@ DEFINE CLASS CL_DBF_RECORDS AS CL_COL_BASE
|
|||||||
* tnCodeLines (@! IN ) Cantidad de l<>neas del programa analizado
|
* tnCodeLines (@! IN ) Cantidad de l<>neas del programa analizado
|
||||||
*---------------------------------------------------------------------------------------------------
|
*---------------------------------------------------------------------------------------------------
|
||||||
LPARAMETERS tcLine, taCodeLines, I, tnCodeLines
|
LPARAMETERS tcLine, taCodeLines, I, tnCodeLines
|
||||||
*** DH 06/02/2014: not implemented
|
*** DH 06/02/2014: not implemented
|
||||||
ENDPROC
|
ENDPROC
|
||||||
|
|
||||||
|
|
||||||
@@ -16022,9 +16021,9 @@ DEFINE CLASS CL_DBF_RECORDS AS CL_COL_BASE
|
|||||||
|
|
||||||
loRecord = CREATEOBJECT('CL_DBF_RECORD')
|
loRecord = CREATEOBJECT('CL_DBF_RECORD')
|
||||||
|
|
||||||
scan
|
SCAN
|
||||||
lcText = lcText + loRecord.toText(@taFields, tnField_Count)
|
lcText = lcText + loRecord.toText(@taFields, tnField_Count)
|
||||||
endscan
|
ENDSCAN
|
||||||
|
|
||||||
TEXT TO lcText ADDITIVE TEXTMERGE NOSHOW FLAGS 1+2 PRETEXT 1+2
|
TEXT TO lcText ADDITIVE TEXTMERGE NOSHOW FLAGS 1+2 PRETEXT 1+2
|
||||||
<<>> <<C_RECORDS_F>>
|
<<>> <<C_RECORDS_F>>
|
||||||
@@ -16069,7 +16068,7 @@ DEFINE CLASS CL_DBF_RECORD AS CL_CUS_BASE
|
|||||||
* tnCodeLines (@! IN ) Cantidad de l<>neas del programa analizado
|
* tnCodeLines (@! IN ) Cantidad de l<>neas del programa analizado
|
||||||
*---------------------------------------------------------------------------------------------------
|
*---------------------------------------------------------------------------------------------------
|
||||||
LPARAMETERS tcLine, taCodeLines, I, tnCodeLines
|
LPARAMETERS tcLine, taCodeLines, I, tnCodeLines
|
||||||
*** DH 06/02/2014: not implemented
|
*** DH 06/02/2014: not implemented
|
||||||
ENDPROC
|
ENDPROC
|
||||||
|
|
||||||
|
|
||||||
@@ -16084,28 +16083,41 @@ DEFINE CLASS CL_DBF_RECORD AS CL_CUS_BASE
|
|||||||
EXTERNAL ARRAY taFields
|
EXTERNAL ARRAY taFields
|
||||||
|
|
||||||
TRY
|
TRY
|
||||||
LOCAL I, lcText, loEx AS EXCEPTION, lcField, luValue
|
LOCAL I, lcText, loEx AS EXCEPTION, lcField, luValue, lcFieldType
|
||||||
lcText = ''
|
lcText = ''
|
||||||
|
|
||||||
|
*** FDBOZZO 2014/07/15: New "num" property invalidates the use of REGNUM field
|
||||||
TEXT TO lcText TEXTMERGE NOSHOW FLAGS 1+2 PRETEXT 1+2
|
TEXT TO lcText TEXTMERGE NOSHOW FLAGS 1+2 PRETEXT 1+2
|
||||||
<<>> <<C_RECORD_I>>
|
<<>> <<STRTRAN( C_RECORD_I, '##', TRANSFORM(RECNO()) )>>
|
||||||
<<>> <<C_RECNO_I>><<recno()>><<C_RECNO_F>>
|
ENDTEXT
|
||||||
endtext
|
|
||||||
|
|
||||||
for I = 1 to tnField_Count
|
FOR I = 1 TO tnField_Count
|
||||||
lcField = taFields[I, 1]
|
lcField = taFields[I, 1]
|
||||||
luValue = evaluate(lcField)
|
lcFieldType = taFields[I, 2]
|
||||||
do case
|
|
||||||
case taFields[I, 2] $ 'CMV'
|
*** FDBOZZO 2014/07/15: Added field restrictions on binary and general fields
|
||||||
luValue = trim(luValue)
|
DO CASE
|
||||||
if This.Encode(luValue) <> luValue
|
CASE lcFieldType == 'G'
|
||||||
luValue = '<![CDATA[' + luValue + ']]>'
|
luValue = 'GENERAL FIELD NOT SUPPORTED'
|
||||||
endif This.Encode(luValue) <> luValue
|
CASE lcFieldType == 'W'
|
||||||
endcase
|
luValue = 'BLOB FIELD NOT SUPPORTED'
|
||||||
|
CASE lcFieldType == 'Q'
|
||||||
|
luValue = 'VARBINARY FIELD NOT SUPPORTED'
|
||||||
|
OTHERWISE
|
||||||
|
luValue = EVALUATE(lcField)
|
||||||
|
ENDCASE
|
||||||
|
|
||||||
|
DO CASE
|
||||||
|
CASE taFields[I, 2] $ 'CMV'
|
||||||
|
luValue = TRIM(luValue)
|
||||||
|
IF THIS.Encode(luValue) <> luValue
|
||||||
|
luValue = '<![CDATA[' + luValue + ']]>'
|
||||||
|
ENDIF THIS.Encode(luValue) <> luValue
|
||||||
|
ENDCASE
|
||||||
TEXT TO lcText TEXTMERGE NOSHOW flags 1+2 PRETEXT 1+2 additive
|
TEXT TO lcText TEXTMERGE NOSHOW flags 1+2 PRETEXT 1+2 additive
|
||||||
<<>> <<'<' + lcField + '>'>><<luValue>></<<lcField>>>
|
<<>> <<'<' + lcField + '>'>><<luValue>></<<lcField>>>
|
||||||
endtext
|
ENDTEXT
|
||||||
next
|
NEXT
|
||||||
|
|
||||||
TEXT TO lcText TEXTMERGE NOSHOW FLAGS 1+2 PRETEXT 1+2 additive
|
TEXT TO lcText TEXTMERGE NOSHOW FLAGS 1+2 PRETEXT 1+2 additive
|
||||||
<<>> <<C_RECORD_F>>
|
<<>> <<C_RECORD_F>>
|
||||||
@@ -16122,22 +16134,22 @@ DEFINE CLASS CL_DBF_RECORD AS CL_CUS_BASE
|
|||||||
ENDTRY
|
ENDTRY
|
||||||
|
|
||||||
RETURN lcText
|
RETURN lcText
|
||||||
endproc
|
ENDPROC
|
||||||
|
|
||||||
procedure Encode
|
PROCEDURE Encode
|
||||||
lparameters tcString
|
LPARAMETERS tcString
|
||||||
local lcString
|
LOCAL lcString
|
||||||
lcString = strtran(tcString, '&', '&')
|
lcString = STRTRAN(tcString, '&', '&')
|
||||||
lcString = strtran(lcString, '>', '>')
|
lcString = STRTRAN(lcString, '>', '>')
|
||||||
lcString = strtran(lcString, '<', '<')
|
lcString = STRTRAN(lcString, '<', '<')
|
||||||
lcString = strtran(lcString, '"', '"')
|
lcString = STRTRAN(lcString, '"', '"')
|
||||||
lcString = strtran(lcString, "'", ''')
|
lcString = STRTRAN(lcString, "'", ''')
|
||||||
lcString = strtran(lcString, '/', '/')
|
lcString = STRTRAN(lcString, '/', '/')
|
||||||
lcString = strtran(lcString, chr(13), ' ')
|
lcString = STRTRAN(lcString, CHR(13), ' ')
|
||||||
lcString = strtran(lcString, chr(10), ' ')
|
lcString = STRTRAN(lcString, CHR(10), ' ')
|
||||||
lcString = strtran(lcString, chr(9), '	')
|
lcString = STRTRAN(lcString, CHR(9), '	')
|
||||||
return lcString
|
RETURN lcString
|
||||||
endproc
|
ENDPROC
|
||||||
|
|
||||||
ENDDEFINE
|
ENDDEFINE
|
||||||
|
|
||||||
@@ -16633,14 +16645,14 @@ DEFINE CLASS CL_MENU_COL_BASE AS CL_COL_BASE
|
|||||||
THROW
|
THROW
|
||||||
|
|
||||||
FINALLY
|
FINALLY
|
||||||
IF toReg.ObjType = 2
|
IF toReg.ObjType = 2
|
||||||
lnLastKey = toCol_LastLevelName.GETKEY(toReg.LevelName)
|
lnLastKey = toCol_LastLevelName.GETKEY(toReg.LevelName)
|
||||||
IF lnLastKey > 0
|
IF lnLastKey > 0
|
||||||
toCol_LastLevelName.REMOVE(lnLastKey)
|
toCol_LastLevelName.REMOVE(lnLastKey)
|
||||||
ENDIF
|
ENDIF
|
||||||
ENDIF
|
ENDIF
|
||||||
STORE NULL TO loBarPop, loOption
|
STORE NULL TO loBarPop, loOption
|
||||||
RELEASE I, lcLevelName, lnLastKey, llHayDatos, loReg, loBarPop, loOption
|
RELEASE I, lcLevelName, lnLastKey, llHayDatos, loReg, loBarPop, loOption
|
||||||
ENDTRY
|
ENDTRY
|
||||||
|
|
||||||
RETURN llRetorno
|
RETURN llRetorno
|
||||||
|
|||||||
Reference in New Issue
Block a user