diff --git a/foxbin2prg.prg b/foxbin2prg.prg
index 511c534..2f26965 100644
--- a/foxbin2prg.prg
+++ b/foxbin2prg.prg
@@ -131,7 +131,11 @@ LPARAMETERS tc_InputFile, tcType_na, tcTextName_na, tlGenText_na, tcDontShowErro
#DEFINE C_MEMBERDATA_F C_VFPDATA_F
#DEFINE C_LEN_MEMBERDATA_I LEN(C_MEMBERDATA_I)
#DEFINE C_LEN_MEMBERDATA_F LEN(C_MEMBERDATA_F)
-#DEFINE C_TAG_REPORTE 'reportes'
+#DEFINE C_DATA_I ''
+#DEFINE C_TAG_REPORTE 'Reportes'
+#DEFINE C_TAG_REPORTE_I '<' + C_TAG_REPORTE + '>'
+#DEFINE C_TAG_REPORTE_F '' + C_TAG_REPORTE + '>'
#DEFINE C_TAB CHR(9)
#DEFINE C_CR CHR(13)
#DEFINE C_LF CHR(10)
@@ -279,17 +283,22 @@ TRY
ENDIF
ENDCASE
- CD (JUSTPATH(lcSys16))
- SET PATH TO (lcPath)
ENDIF
CATCH TO loEx
+ IF llExisteConfig
+ goCnv.writeLog( 'ERROR: ' + TRANSFORM(loEx.ErrorNo) + ', ' + loEx.Message + CR_LF ;
+ + loEx.Procedure + ', line ' + TRANSFORM(loEx.LineNo) + CR_LF ;
+ + loEx.Details )
+ ENDIF
FINALLY
goFrm_Avance.HIDE()
goFrm_Avance.RELEASE()
STORE NULL TO goCnv, goFrm_Avance
RELEASE goCnv, goFrm_Avance
+ CD (JUSTPATH(lcSys16))
+ SET PATH TO (lcPath)
ENDTRY
IF _VFP.STARTMODE > 0
@@ -335,7 +344,7 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM
l_ShowErrors = .F.
lFileMode = .F.
nClassTimeStamp = ''
- n_FB2PRG_Version = 1.8
+ n_FB2PRG_Version = 1.9
o_Conversor = NULL
c_VC2 = 'VC2'
c_SC2 = 'SC2'
@@ -789,6 +798,16 @@ DEFINE CLASS c_conversor_base AS SESSION
ENDIF
ENDIF
+ CASE JUSTEXT( THIS.c_OutputFile ) = 'FRX'
+ IF FILE( FORCEEXT(THIS.c_OutputFile,'FRX') )
+ THIS.writeLog( 'backup de: ' + FORCEEXT(THIS.c_OutputFile,'FRX') + '/FRT' )
+ COPY FILE (FORCEEXT(THIS.c_OutputFile,'FRX')) TO (FORCEEXT(THIS.c_OutputFile,'FRX' + lcNext_Bak))
+
+ IF FILE( FORCEEXT(THIS.c_OutputFile,'FRT') )
+ COPY FILE (FORCEEXT(THIS.c_OutputFile,'FRT')) TO (FORCEEXT(THIS.c_OutputFile,'FRT' + lcNext_Bak))
+ ENDIF
+ ENDIF
+
OTHERWISE
ERROR 'Tipo de archivo [' + JUSTFNAME(THIS.c_OutputFile) + '] no soportado para backup!'
@@ -1321,9 +1340,14 @@ DEFINE CLASS c_conversor_prg_a_bin AS c_conversor_base
+ [] ;
+ [] ;
+ [] ;
+ + [] ;
+ [] ;
+ + [] ;
+ [] ;
+ + [] ;
+ + [] ;
+ [] ;
+ + [] ;
+ [] ;
+ [] ;
+ [] ;
@@ -1545,11 +1569,6 @@ DEFINE CLASS c_conversor_prg_a_bin AS c_conversor_base
*******************************************************************************************************************
PROCEDURE createProject
- LPARAMETERS toProject
-
- #IF .F.
- LOCAL toProject AS CL_PROJECT OF 'FOXBIN2PRG.PRG'
- #ENDIF
CREATE TABLE (THIS.c_OutputFile) ;
( NAME M ;
@@ -1582,6 +1601,18 @@ DEFINE CLASS c_conversor_prg_a_bin AS c_conversor_base
, USER M )
USE (THIS.c_OutputFile) ALIAS TABLABIN AGAIN SHARED
+
+ ENDPROC
+
+
+ *******************************************************************************************************************
+ PROCEDURE createProject_RecordHeader
+ LPARAMETERS toProject
+
+ #IF .F.
+ LOCAL toProject AS CL_PROJECT OF 'FOXBIN2PRG.PRG'
+ #ENDIF
+
INSERT INTO TABLABIN ;
( NAME ;
, TYPE ;
@@ -1625,9 +1656,6 @@ DEFINE CLASS c_conversor_prg_a_bin AS c_conversor_base
*******************************************************************************************************************
PROCEDURE createClasslib
- * No funciona con el EXE
- *CREATE CLASSLIB (THIS.c_outputFile)
-
CREATE TABLE (THIS.c_OutputFile) ;
( PLATFORM C(8) ;
, UNIQUEID C(10) ;
@@ -1654,6 +1682,13 @@ DEFINE CLASS c_conversor_prg_a_bin AS c_conversor_base
, USER M )
USE (THIS.c_OutputFile) ALIAS TABLABIN AGAIN SHARED
+
+ ENDPROC
+
+
+ *******************************************************************************************************************
+ PROCEDURE createClasslib_RecordHeader
+
INSERT INTO TABLABIN ;
( PLATFORM ;
, UNIQUEID ;
@@ -1695,6 +1730,13 @@ DEFINE CLASS c_conversor_prg_a_bin AS c_conversor_base
, USER M )
USE (THIS.c_OutputFile) ALIAS TABLABIN AGAIN SHARED
+
+ ENDPROC
+
+
+ *******************************************************************************************************************
+ PROCEDURE createForm_RecordHeader
+
INSERT INTO TABLABIN ;
( PLATFORM ;
, UNIQUEID ;
@@ -1707,6 +1749,99 @@ DEFINE CLASS c_conversor_prg_a_bin AS c_conversor_base
ENDPROC
+ *******************************************************************************************************************
+ PROCEDURE createReport
+
+ CREATE TABLE (THIS.c_OutputFile) ;
+ ( 'PLATFORM' C(8) ;
+ , 'UNIQUEID' C(10) ;
+ , 'TIMESTAMP' N(10) ;
+ , 'OBJTYPE' N(2) ;
+ , 'OBJCODE' N(3) ;
+ , 'NAME' M ;
+ , 'EXPR' M ;
+ , 'VPOS' N(9,3) ;
+ , 'HPOS' N(9,3) ;
+ , 'HEIGHT' N(9,3) ;
+ , 'WIDTH' N(9,3) ;
+ , 'STYLE' M ;
+ , 'PICTURE' M ;
+ , 'ORDER' M NOCPTRANS ;
+ , 'UNIQUE' L ;
+ , 'COMMENT' M ;
+ , 'ENVIRON' L ;
+ , 'BOXCHAR' C(1) ;
+ , 'FILLCHAR' C(1) ;
+ , 'TAG' M ;
+ , 'TAG2' M NOCPTRANS ;
+ , 'PENRED' N(5) ;
+ , 'PENGREEN' N(5) ;
+ , 'PENBLUE' N(5) ;
+ , 'FILLRED' N(5) ;
+ , 'FILLGREEN' N(5) ;
+ , 'FILLBLUE' N(5) ;
+ , 'PENSIZE' N(5) ;
+ , 'PENPAT' N(5) ;
+ , 'FILLPAT' N(5) ;
+ , 'FONTFACE' M ;
+ , 'FONTSTYLE' N(3) ;
+ , 'FONTSIZE' N(3) ;
+ , 'MODE' N(3) ;
+ , 'RULER' N(1) ;
+ , 'RULERLINES' N(1) ;
+ , 'GRID' L ;
+ , 'GRIDV' N(2) ;
+ , 'GRIDH' N(2) ;
+ , 'FLOAT' L ;
+ , 'STRETCH' L ;
+ , 'STRETCHTOP' L ;
+ , 'TOP' L ;
+ , 'BOTTOM' L ;
+ , 'SUPTYPE' N(1) ;
+ , 'SUPREST' N(1) ;
+ , 'NOREPEAT' L ;
+ , 'RESETRPT' N(2) ;
+ , 'PAGEBREAK' L ;
+ , 'COLBREAK' L ;
+ , 'RESETPAGE' L ;
+ , 'GENERAL' N(3) ;
+ , 'SPACING' N(3) ;
+ , 'DOUBLE' L ;
+ , 'SWAPHEADER' L ;
+ , 'SWAPFOOTER' L ;
+ , 'EJECTBEFOR' L ;
+ , 'EJECTAFTER' L ;
+ , 'PLAIN' L ;
+ , 'SUMMARY' L ;
+ , 'ADDALIAS' L ;
+ , 'OFFSET' N(3) ;
+ , 'TOPMARGIN' N(3) ;
+ , 'BOTMARGIN' N(3) ;
+ , 'TOTALTYPE' N(2) ;
+ , 'RESETTOTAL' N(2) ;
+ , 'RESOID' N(2) ;
+ , 'CURPOS' L ;
+ , 'SUPALWAYS' L ;
+ , 'SUPOVFLOW' L ;
+ , 'SUPRPCOL' N(1) ;
+ , 'SUPGROUP' N(2) ;
+ , 'SUPVALCHNG' L ;
+ , 'SUPEXPR' M ;
+ , 'USER' M )
+
+ USE (THIS.c_OutputFile) ALIAS TABLABIN AGAIN SHARED
+
+ ENDPROC
+
+
+ *******************************************************************************************************************
+ PROCEDURE emptyRecord
+ LOCAL loReg
+ SCATTER MEMO BLANK NAME loReg
+ RETURN loReg
+ ENDPROC
+
+
*******************************************************************************************************************
PROCEDURE escribirArchivoBin
LPARAMETERS toModulo
@@ -2192,6 +2327,14 @@ DEFINE CLASS c_conversor_prg_a_bin AS c_conversor_base
*******************************************************************************************************************
PROCEDURE analizarAsignacion_TAG_Indicado
+ *-- DETALLES: Este método está pensado para leer los tags FB2P_VALUE y MEMBERDATA, que tienen esta sintaxis:
+ *
+ * _memberdata =
+ *
+ * && XML Metadata for customizable properties
+ *
+ * Este es un
valor especial
+ *
LPARAMETERS tcPropName, tcValue, taProps, tnProp_Count, I, tcTAG_I, tcTAG_F, tnLEN_TAG_I, tnLEN_TAG_F, tcMemo
EXTERNAL ARRAY taProps
LOCAL llBloqueEncontrado, loEx AS EXCEPTION
@@ -3017,6 +3160,11 @@ DEFINE CLASS c_conversor_prg_a_vcx AS c_conversor_prg_a_bin
C_FB2PRG_CODE = FILETOSTR( THIS.c_InputFile )
lnCodeLines = ALINES( laCodeLines, C_FB2PRG_CODE )
+ THIS.doBackup()
+
+ *-- Creo la librería
+ THIS.createClasslib()
+
*-- Identifico los TEXT/ENDTEXT, #IF .F./#ENDIF
THIS.identificarBloquesDeExclusion( @laCodeLines, lnCodeLines, .F., @laBloquesExclusion, @lnBloquesExclusion )
@@ -3118,8 +3266,8 @@ DEFINE CLASS c_conversor_prg_a_vcx AS c_conversor_prg_a_bin
, loClase AS CL_CLASE OF 'FOXBIN2PRG.PRG' ;
, loObjeto AS CL_OBJETO OF 'FOXBIN2PRG.PRG'
- THIS.doBackup()
- THIS.createClasslib()
+ *-- Creo el registro de cabecera
+ THIS.createClasslib_RecordHeader()
*-- Recorro las CLASES
@@ -3277,6 +3425,11 @@ DEFINE CLASS c_conversor_prg_a_scx AS c_conversor_prg_a_bin
C_FB2PRG_CODE = FILETOSTR( THIS.c_InputFile )
lnCodeLines = ALINES( laCodeLines, C_FB2PRG_CODE )
+ THIS.doBackup()
+
+ *-- Creo el form
+ THIS.createForm()
+
*-- Identifico los TEXT/ENDTEXT, #IF .F./#ENDIF
THIS.identificarBloquesDeExclusion( @laCodeLines, lnCodeLines, .F., @laBloquesExclusion, @lnBloquesExclusion )
@@ -3378,8 +3531,8 @@ DEFINE CLASS c_conversor_prg_a_scx AS c_conversor_prg_a_bin
, loClase AS CL_CLASE OF 'FOXBIN2PRG.PRG' ;
, loObjeto AS CL_OBJETO OF 'FOXBIN2PRG.PRG'
- THIS.doBackup()
- THIS.createForm()
+ *-- Creo el registro de cabecera
+ THIS.createForm_RecordHeader()
*-- El SCX tiene el INCLUDE en el primer registro
IF NOT EMPTY(toModulo._includeFile)
@@ -3444,7 +3597,7 @@ DEFINE CLASS c_conversor_prg_a_scx AS c_conversor_prg_a_bin
THIS.insert_AllObjects( @loClase )
- IF NOT loClase._BaseClass == 'dataenvironment'
+ IF .F. &&NOT loClase._BaseClass == 'dataenvironment'
*-- Inserto el COMMENT
INSERT INTO TABLABIN ;
( PLATFORM ;
@@ -3553,6 +3706,11 @@ DEFINE CLASS c_conversor_prg_a_pjx AS c_conversor_prg_a_bin
C_FB2PRG_CODE = FILETOSTR( THIS.c_InputFile )
lnCodeLines = ALINES( laCodeLines, C_FB2PRG_CODE )
+ THIS.doBackup()
+
+ *-- Creo solo la cabecera del proyecto
+ THIS.createProject()
+
*-- Identifico los TEXT/ENDTEXT, #IF .F./#ENDIF
*THIS.identificarBloquesDeExclusion( @laCodeLines, .F., @laBloquesExclusion, @lnBloquesExclusion )
@@ -3590,10 +3748,8 @@ DEFINE CLASS c_conversor_prg_a_pjx AS c_conversor_prg_a_bin
, loServerHead AS CL_PROJ_SRV_HEAD OF 'FOXBIN2PRG.PRG' ;
, loFile AS CL_PROJ_FILE OF 'FOXBIN2PRG.PRG'
- THIS.doBackup()
-
- *-- Creo solo la cabecera del proyecto
- THIS.createProject( toProject )
+ *-- Creo solo el registro de cabecera del proyecto
+ THIS.createProject_RecordHeader( toProject )
lcMainProg = ''
@@ -4229,6 +4385,318 @@ DEFINE CLASS c_conversor_prg_a_pjx AS c_conversor_prg_a_bin
ENDDEFINE
+*******************************************************************************************************************
+DEFINE CLASS c_conversor_prg_a_frx AS c_conversor_prg_a_bin
+ #IF .F.
+ LOCAL THIS AS c_conversor_prg_a_frx OF 'FOXBIN2PRG.PRG'
+ #ENDIF
+ _MEMBERDATA = [] ;
+ + [] ;
+ + [] ;
+ + [] ;
+ + [] ;
+ + []
+
+
+ *******************************************************************************************************************
+ PROCEDURE Convertir
+ DODEFAULT()
+
+ TRY
+ LOCAL lnCodError, loEx AS EXCEPTION, loReg, lcLine, laCodeLines(1), lnCodeLines, lnFB2P_Version, lcSourceFile ;
+ , laBloquesExclusion(1,2), lnBloquesExclusion, I ;
+ , loReport AS CL_REPORT OF 'FOXBIN2PRG.PRG'
+ STORE 0 TO lnCodError, lnCodeLines, lnFB2P_Version
+ STORE '' TO lcLine, lcSourceFile
+ STORE NULL TO loReg, toModulo
+
+ C_FB2PRG_CODE = FILETOSTR( THIS.c_InputFile )
+ lnCodeLines = ALINES( laCodeLines, C_FB2PRG_CODE )
+
+ THIS.doBackup()
+
+ *-- Creo el reporte
+ THIS.createReport()
+
+ *-- Identifico el inicio/fin de bloque, definición, cabecera y cuerpo del reporte
+ THIS.identificarBloquesDeCodigo( @laCodeLines, lnCodeLines, @laBloquesExclusion, lnBloquesExclusion, @loReport )
+
+ THIS.escribirArchivoBin( @loReport )
+
+
+ CATCH TO loEx
+ lnCodError = loEx.ERRORNO
+
+ IF THIS.l_Debug AND _VFP.STARTMODE = 0
+ SET STEP ON
+ ENDIF
+
+ THROW
+
+ ENDTRY
+
+ RETURN lnCodError
+ ENDPROC
+
+
+ *******************************************************************************************************************
+ PROCEDURE escribirArchivoBin
+ LPARAMETERS toReport
+ *-- -----------------------------------------------------------------------------------------------------------
+ #IF .F.
+ LOCAL toReport AS CL_REPORT OF 'FOXBIN2PRG.PRG'
+ #ENDIF
+
+ TRY
+ LOCAL loReg, lnCodError, loEx AS EXCEPTION
+
+ *-- Agrego los ARCHIVOS
+ FOR EACH loReg IN toReport FOXOBJECT
+ INSERT INTO TABLABIN FROM NAME loReg
+ ENDFOR
+
+ USE IN (SELECT("TABLABIN"))
+
+
+ CATCH TO loEx
+ lnCodError = loEx.ERRORNO
+
+ IF THIS.l_Debug AND _VFP.STARTMODE = 0
+ SET STEP ON
+ ENDIF
+
+ THROW
+
+ FINALLY
+ USE IN (SELECT("TABLABIN"))
+
+ ENDTRY
+
+ RETURN lnCodError
+ ENDPROC
+
+
+ *******************************************************************************************************************
+ PROCEDURE identificarBloquesDeCodigo
+ LPARAMETERS taCodeLines, tnCodeLines, taBloquesExclusion, tnBloquesExclusion, toReport
+ *--------------------------------------------------------------------------------------------------------------
+ * taCodeLines (!@ IN ) El array con las líneas del código donde buscar
+ * tnCodeLines (!@ IN ) Cantidad de líneas de código
+ * taBloquesExclusion (?@ IN ) Sin uso
+ * tnBloquesExclusion (?@ IN ) Sin uso
+ * toReport (?@ OUT) Objeto con toda la información del reporte analizado
+ *
+ * NOTA:
+ * Como identificador se usa el nombre de clase o de procedimiento, según corresponda.
+ *--------------------------------------------------------------------------------------------------------------
+ EXTERNAL ARRAY taCodeLines, taBloquesExclusion
+
+ #IF .F.
+ LOCAL toReport AS CL_REPORT OF 'FOXBIN2PRG.PRG'
+ #ENDIF
+
+ TRY
+ LOCAL I, lc_Comentario, lcLine, llFoxBin2Prg_Completed
+ STORE 0 TO I
+
+ THIS.c_Type = UPPER(JUSTEXT(THIS.c_OutputFile))
+
+ IF tnCodeLines > 1
+ toReport = NULL
+ toReport = CREATEOBJECT('CL_REPORT')
+
+ WITH THIS
+ FOR I = 1 TO tnCodeLines
+ .set_Line( @lcLine, @taCodeLines, I )
+
+ IF .lineIsOnlyCommentAndNoMetadata( @lcLine, @lc_Comentario ) && Vacía o solo Comentarios
+ LOOP
+ ENDIF
+
+ DO CASE
+ CASE NOT llFoxBin2Prg_Completed AND .analizarBloque_FoxBin2Prg( toReport, @lcLine, @taCodeLines, @I, tnCodeLines )
+ llFoxBin2Prg_Completed = .T.
+
+ CASE .analizarBloque_Reportes( toReport, @lcLine, @taCodeLines, @I, tnCodeLines )
+
+ ENDCASE
+ ENDFOR
+ ENDWITH && THIS
+ ENDIF
+
+ CATCH TO loEx
+ IF THIS.l_Debug AND _VFP.STARTMODE = 0
+ SET STEP ON
+ ENDIF
+
+ THROW
+
+ ENDTRY
+
+ RETURN
+ ENDPROC
+
+
+ *******************************************************************************************************************
+ PROCEDURE analizarBloque_Reportes
+ *------------------------------------------------------
+ *-- Analiza el bloque
+ *------------------------------------------------------
+ LPARAMETERS toReport, tcLine, taCodeLines, I, tnCodeLines
+
+ #IF .F.
+ LOCAL toReport AS CL_REPORT OF 'FOXBIN2PRG.PRG'
+ #ENDIF
+
+ TRY
+ LOCAL llBloqueEncontrado, lcComment, lcMetadatos, luValor ;
+ , laPropsAndValues(1,2), lnPropsAndValues_Count ;
+ , loReg
+
+ IF LEFT( tcLine, LEN(C_TAG_REPORTE) + 1 ) == '<' + C_TAG_REPORTE + ''
+ llBloqueEncontrado = .T.
+ loReg = THIS.emptyRecord()
+
+ WITH THIS
+ FOR I = I + 1 TO tnCodeLines
+ lcComment = ''
+ .set_Line( @tcLine, @taCodeLines, I )
+
+ DO CASE
+ CASE LEFT( tcLine, LEN(C_TAG_REPORTE_F) ) == C_TAG_REPORTE_F
+ I = I + 1
+ EXIT
+
+ CASE .lineIsOnlyCommentAndNoMetadata( @tcLine, @lcComment )
+ LOOP && Saltear comentarios
+
+ *CASE UPPER( LEFT( tcLine, 14 ) ) == 'BUILD PROJECT '
+ * LOOP
+
+ CASE .analizarBloque_platform( toReport, @tcLine, @taCodeLines, @I, @tnCodeLines, @loReg )
+
+ CASE .analizarBloque_CDATA_inline( toReport, @tcLine, @taCodeLines, @I, tnCodeLines, @loReg, 'picture' )
+
+ CASE .analizarBloque_CDATA_inline( toReport, @tcLine, @taCodeLines, @I, tnCodeLines, @loReg, 'tag' )
+
+ CASE .analizarBloque_CDATA_inline( toReport, @tcLine, @taCodeLines, @I, tnCodeLines, @loReg, 'tag2' )
+
+ CASE .analizarBloque_CDATA_inline( toReport, @tcLine, @taCodeLines, @I, tnCodeLines, @loReg, 'penred' )
+
+ *CASE .analizarBloque_CDATA_inline( toReport, @tcLine, @taCodeLines, @I, tnCodeLines, @loReg, 'style' )
+
+ *CASE .analizarBloque_CDATA_inline( toReport, @tcLine, @taCodeLines, @I, tnCodeLines, @loReg, 'expr' )
+
+ CASE .analizarBloque_CDATA_inline( toReport, @tcLine, @taCodeLines, @I, tnCodeLines, @loReg, 'user' )
+
+ ENDCASE
+ ENDFOR
+ ENDWITH && THIS
+
+ I = I - 1
+ toReport.Add( loReg )
+ ENDIF
+
+ CATCH TO loEx
+ IF THIS.l_Debug AND _VFP.STARTMODE = 0
+ SET STEP ON
+ ENDIF
+
+ THROW
+
+ ENDTRY
+
+ RETURN llBloqueEncontrado
+ ENDPROC
+
+
+ *******************************************************************************************************************
+ PROCEDURE analizarBloque_platform
+ *------------------------------------------------------
+ *-- Analiza el bloque
+ *------------------------------------------------------
+ LPARAMETERS toReport, tcLine, taCodeLines, I, tnCodeLines, toReg
+
+ #IF .F.
+ LOCAL toReport AS CL_REPORT OF 'FOXBIN2PRG.PRG'
+ #ENDIF
+
+ TRY
+ LOCAL llBloqueEncontrado, X, lnPos, lnPos2, lcValue, lnLenPropName, laProps(1) ;
+ , lcComment, lcMetadatos, luValor ;
+ , laPropsAndValues(1,2), lnPropsAndValues_Count
+
+ IF LOWER( LEFT(tcLine, 10) ) == 'platform="'
+ llBloqueEncontrado = .T.
+ lnLastPos = 1
+
+ FOR X = 1 TO AMEMBERS( laProps, toReg, 0 )
+ lnPos = AT( LOWER(laProps(X)) + '="', tcLine )
+
+ IF lnPos > 0
+ lnLenPropName = LEN(laProps(X))
+ lnPos2 = AT( '"', SUBSTR( tcLine, lnPos + lnLenPropName + 2 ) )
+ lcValue = SUBSTR( tcLine, lnPos + lnLenPropName + 2, lnPos2 - 1 )
+ ADDPROPERTY( toReg, laProps(X), lcValue )
+ ENDIF
+ ENDFOR
+
+ ENDIF
+
+ CATCH TO loEx
+ IF THIS.l_Debug AND _VFP.STARTMODE = 0
+ SET STEP ON
+ ENDIF
+
+ THROW
+
+ ENDTRY
+
+ RETURN llBloqueEncontrado
+ ENDPROC
+
+
+ *******************************************************************************************************************
+ PROCEDURE analizarBloque_CDATA_inline
+ *------------------------------------------------------
+ *-- Analiza el bloque
+ *------------------------------------------------------
+ LPARAMETERS toReport, tcLine, taCodeLines, I, tnCodeLines, toReg, tcPropName
+
+ #IF .F.
+ LOCAL toReport AS CL_REPORT OF 'FOXBIN2PRG.PRG'
+ #ENDIF
+
+ TRY
+ LOCAL llBloqueEncontrado, lcValue, loEx as Exception
+
+ IF LEFT(tcLine, 9) == '<' + tcPropName + '>'
+ llBloqueEncontrado = .T.
+
+ lcValue = STREXTRACT( tcLine, C_DATA_I, C_DATA_F )
+ ADDPROPERTY( toReg, tcPropName, lcValue )
+ ENDIF
+
+ CATCH TO loEx
+ IF loEx.ErrorNo = 1470 && Incorrect property name.
+ loEx.UserValue = 'PropName=[' + TRANSFORM(tcPropName) + '], Value=[' + TRANSFORM(lcValue) + ']'
+ ENDIF
+
+ IF THIS.l_Debug AND _VFP.STARTMODE = 0
+ SET STEP ON
+ ENDIF
+
+ THROW
+
+ ENDTRY
+
+ RETURN llBloqueEncontrado
+ ENDPROC
+
+
+ENDDEFINE
+
+
*******************************************************************************************************************
DEFINE CLASS c_conversor_bin_a_prg AS c_conversor_base
#IF .F.
@@ -4771,94 +5239,96 @@ DEFINE CLASS c_conversor_bin_a_prg AS c_conversor_base
TRY
LOCAL lc_TAG_REPORTE
lc_TAG_REPORTE_I = '<' + C_TAG_REPORTE + ' '
- lc_TAG_REPORTE_F = ' >' + C_TAG_REPORTE + '>'
+ lc_TAG_REPORTE_F = '' + C_TAG_REPORTE + '>'
TEXT TO C_FB2PRG_CODE ADDITIVE TEXTMERGE NOSHOW FLAGS 1+2 PRETEXT 1+2
<>
ENDTEXT
- TEXT TO C_FB2PRG_CODE ADDITIVE TEXTMERGE NOSHOW FLAGS 1 PRETEXT 1+2
- platform="WINDOWS " uniqueid="<>" timestamp="<>" objtype="<>"
+ TEXT TO C_FB2PRG_CODE ADDITIVE TEXTMERGE NOSHOW FLAGS 1+2 PRETEXT 1+2
+ <>platform="WINDOWS " uniqueid="<>" timestamp="<>" objtype="<>" <<>>
ENDTEXT
TEXT TO C_FB2PRG_CODE ADDITIVE TEXTMERGE NOSHOW FLAGS 1 PRETEXT 1+2
- objcode="<>" name="<>"
+ objcode="<>" name="<>" <<>>
ENDTEXT
TEXT TO C_FB2PRG_CODE ADDITIVE TEXTMERGE NOSHOW FLAGS 1 PRETEXT 1+2
- vpos="<>" hpos="<>" height="toReg.height" width="toReg.width"
+ vpos="<>" hpos="<>" height="<>" width="<>" <<>>
ENDTEXT
TEXT TO C_FB2PRG_CODE ADDITIVE TEXTMERGE NOSHOW FLAGS 1 PRETEXT 1+2
- picture="<>" order="<>" unique="<>" comment="<>"
+ order="<>" unique="<>" comment="<>" <<>>
ENDTEXT
TEXT TO C_FB2PRG_CODE ADDITIVE TEXTMERGE NOSHOW FLAGS 1 PRETEXT 1+2
- environ="<>" boxchar="<>" fillchar="<>"
+ environ="<>" boxchar="<>" fillchar="<>" <<>>
ENDTEXT
TEXT TO C_FB2PRG_CODE ADDITIVE TEXTMERGE NOSHOW FLAGS 1 PRETEXT 1+2
- tag="<>" tag2="<>" penred="<>"
+ pengreen="<>" penblue="<>" fillred="<>" fillgreen="<>" <<>>
ENDTEXT
TEXT TO C_FB2PRG_CODE ADDITIVE TEXTMERGE NOSHOW FLAGS 1 PRETEXT 1+2
- pengreen="<>" penblue="<>" fillred="<>" fillgreen="<>"
+ fillblue="<>" pensize="<>" penpat="<>" fillpat="<>" <<>>
ENDTEXT
TEXT TO C_FB2PRG_CODE ADDITIVE TEXTMERGE NOSHOW FLAGS 1 PRETEXT 1+2
- fillblue="<>" pensize="<>" penpat="<>" fillpat="<>"
+ fontface="<>" fontstyle="<>" fontsize="<>" mode="<>" <<>>
ENDTEXT
TEXT TO C_FB2PRG_CODE ADDITIVE TEXTMERGE NOSHOW FLAGS 1 PRETEXT 1+2
- fontface="<>" fontstyle="<>" fontsize="<>" mode="<>"
+ ruler="<>" rulerlines="<>" grid="<>" gridv="<>" <<>>
ENDTEXT
TEXT TO C_FB2PRG_CODE ADDITIVE TEXTMERGE NOSHOW FLAGS 1 PRETEXT 1+2
- ruler="<>" rulerlines="<>" grid="<>" gridv="<>"
- ENDTEXT
-
- TEXT TO C_FB2PRG_CODE ADDITIVE TEXTMERGE NOSHOW FLAGS 1 PRETEXT 1
- gridh="<>" float="<>" stretch="<>" stretchtop="<>"
+ gridh="<>" float="<>" stretch="<>" stretchtop="<>" <<>>
ENDTEXT
TEXT TO C_FB2PRG_CODE ADDITIVE TEXTMERGE NOSHOW FLAGS 1 PRETEXT 1+2
- top="<>" bottom="<>" suptype="<>" suprest="<>" norepeat="<>"
+ top="<>" bottom="<>" suptype="<>" suprest="<>" norepeat="<>" <<>>
ENDTEXT
TEXT TO C_FB2PRG_CODE ADDITIVE TEXTMERGE NOSHOW FLAGS 1 PRETEXT 1+2
- resetrpt="<>" pagebreak="<>" colbreak="<>" resetpage="<>"
+ resetrpt="<>" pagebreak="<>" colbreak="<>" resetpage="<>" <<>>
ENDTEXT
TEXT TO C_FB2PRG_CODE ADDITIVE TEXTMERGE NOSHOW FLAGS 1 PRETEXT 1+2
- general="<>" spacing="<>" double="<>" swapheader="<>"
+ general="<>" spacing="<>" double="<>" swapheader="<>" <<>>
ENDTEXT
TEXT TO C_FB2PRG_CODE ADDITIVE TEXTMERGE NOSHOW FLAGS 1 PRETEXT 1+2
- swapfooter="<>" ejectbefor="<>" ejectafter="<>" plain="<>"
+ swapfooter="<>" ejectbefor="<>" ejectafter="<>" plain="<>" <<>>
ENDTEXT
TEXT TO C_FB2PRG_CODE ADDITIVE TEXTMERGE NOSHOW FLAGS 1 PRETEXT 1+2
- summary="<>" addalias="<>" offset="<>" topmargin="<>"
+ summary="<>" addalias="<>" offset="<>" topmargin="<>" <<>>
ENDTEXT
TEXT TO C_FB2PRG_CODE ADDITIVE TEXTMERGE NOSHOW FLAGS 1 PRETEXT 1+2
- botmargin="<>" totaltype="<>" resettotal="<>" resoid="<>"
+ botmargin="<>" totaltype="<>" resettotal="<>" resoid="<>" <<>>
ENDTEXT
TEXT TO C_FB2PRG_CODE ADDITIVE TEXTMERGE NOSHOW FLAGS 1 PRETEXT 1+2
- curpos="<>" supalways="<>" supovflow="<>" suprpcol="<>"
+ curpos="<>" supalways="<>" supovflow="<>" suprpcol="<>" <<>>
ENDTEXT
TEXT TO C_FB2PRG_CODE ADDITIVE TEXTMERGE NOSHOW FLAGS 1 PRETEXT 1+2
- supgroup="<>" supvalchng="<>" supexpr="<>" user="<>"
+ supgroup="<>" supvalchng="<>" supexpr="<>" >
+ ENDTEXT
+
+ * <>tag="<>"
+ TEXT TO C_FB2PRG_CODE ADDITIVE TEXTMERGE NOSHOW FLAGS 1+2 PRETEXT 1+2
+ <>>]]>
+ <>>]]>
+ <>>]]>
+ <>>]]>
+ <>