diff --git a/foxbin2prg.prg b/foxbin2prg.prg
index 6d6ea79..511c534 100644
--- a/foxbin2prg.prg
+++ b/foxbin2prg.prg
@@ -46,6 +46,7 @@
* 01/12/2013 FDBOZZO v1.6 Refactorización completa generación BIN y PRG, cambio de algoritmos, arreglo de bugs, Unit Testing con FoxUnit
* 02/12/2013 FDBOZZO v1.7 Arreglo bug "Name", barra de progreso, agregado mensaje de ayuda si se llama sin parámetros, verificación y logueo de archivos READONLY con debug activa
* 03/12/2013 FDBOZZO v1.8 Arreglo bug "Name" (otra vez), sort encapsulado y reutilizado para versiones TEXTO y BIN por seguridad
+* 03/12/2013 FDBOZZO v1.9 Arreglo bug pérdida de propiedades causado por una mejora anterior
*
*---------------------------------------------------------------------------------------------------
* TESTEO Y REPORTE DE BUGS (AGRADECIMIENTOS)
@@ -53,6 +54,7 @@
* 27/11/2013 Fidel Charny REPORTE BUG: Error en el guardado de ciertas propiedades de array (arreglado en v.1.6)
* 02/12/2013 Fidel Charny REPORTE BUG: Se pierden algunas propiedades y no muestra picture si "Name" no es la última (arreglado en v.1.7)
* 03/12/2013 Fidel Charny REPORTE BUG: Se siguen perdiendo algunas propiedades por implementación defectuosa del arreglo anterior (arreglado en v.1.8)
+* 03/12/2013 Fidel Charny REPORTE BUG: Se siguen perdiendo algunas propiedades por implementación defectuosa de una mejora anterior (arreglado en v.1.9)
*
*---------------------------------------------------------------------------------------------------
* TRAMIENTOS ESPECIALES DE ASIGNACIONES DE PROPIEDADES:
@@ -121,12 +123,15 @@ LPARAMETERS tc_InputFile, tcType_na, tcTextName_na, tlGenText_na, tcDontShowErro
#DEFINE C_FILE_TXT_F '*'
#DEFINE C_FB2P_VALUE_I ''
#DEFINE C_FB2P_VALUE_F ''
-#DEFINE C_MEMBERDATA_I ''
-#DEFINE C_MEMBERDATA_F ''
-#DEFINE C_LEN_MEMBERDATA_I LEN(C_MEMBERDATA_I)
-#DEFINE C_LEN_MEMBERDATA_F LEN(C_MEMBERDATA_F)
#DEFINE C_LEN_FB2P_VALUE_I LEN(C_FB2P_VALUE_I)
#DEFINE C_LEN_FB2P_VALUE_F LEN(C_FB2P_VALUE_F)
+#DEFINE C_VFPDATA_I ''
+#DEFINE C_VFPDATA_F ''
+#DEFINE C_MEMBERDATA_I C_VFPDATA_I
+#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_TAB CHR(9)
#DEFINE C_CR CHR(13)
#DEFINE C_LF CHR(10)
@@ -315,6 +320,9 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM
+ [] ;
+ [] ;
+ [] ;
+ + [] ;
+ + [] ;
+ + [] ;
+ [] ;
+ [] ;
+ []
@@ -335,6 +343,9 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM
c_MN2 = 'MN2'
c_FR2 = 'FR2'
c_LB2 = 'LB2'
+ c_DB2 = 'DB2'
+ c_CD2 = 'CD2'
+ c_DC2 = 'DC2'
*******************************************************************************************************************
@@ -397,6 +408,10 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM
THIS.c_OutputFile = FORCEEXT( THIS.c_InputFile, THIS.c_PJ2 )
THIS.o_Conversor = CREATEOBJECT( 'c_conversor_pjx_a_prg' )
+ CASE JUSTEXT(THIS.c_InputFile) = 'FRX'
+ THIS.c_OutputFile = FORCEEXT( THIS.c_InputFile, THIS.c_FR2 )
+ THIS.o_Conversor = CREATEOBJECT( 'c_conversor_frx_a_prg' )
+
CASE JUSTEXT(THIS.c_InputFile) = THIS.c_VC2
THIS.c_OutputFile = FORCEEXT( THIS.c_InputFile, 'VCX' )
THIS.o_Conversor = CREATEOBJECT( 'c_conversor_prg_a_vcx' )
@@ -409,6 +424,10 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM
THIS.c_OutputFile = FORCEEXT( THIS.c_InputFile, 'PJX' )
THIS.o_Conversor = CREATEOBJECT( 'c_conversor_prg_a_pjx' )
+ CASE JUSTEXT(THIS.c_InputFile) = THIS.c_FR2
+ THIS.c_OutputFile = FORCEEXT( THIS.c_InputFile, 'FRX' )
+ THIS.o_Conversor = CREATEOBJECT( 'c_conversor_prg_a_frx' )
+
OTHERWISE
ERROR 'El archivo [' + THIS.c_InputFile + '] no está soportado'
@@ -547,10 +566,12 @@ DEFINE CLASS c_conversor_base AS SESSION
+ [] ;
+ [] ;
+ [] ;
+ + [] ;
+ [] ;
+ [] ;
+ [] ;
+ [] ;
+ + [] ;
+ [] ;
+ [] ;
+ [] ;
@@ -1254,6 +1275,26 @@ DEFINE CLASS c_conversor_base AS SESSION
ENDPROC
+ *******************************************************************************************************************
+ PROCEDURE encode_SpecialCodes_1_31
+ LPARAMETERS tcText
+ LOCAL I
+ FOR I = 0 TO 31
+ tcText = STRTRAN( tcText, CHR(I), '{' + TRANSFORM(I) + '}' )
+ ENDFOR
+ RETURN tcText
+ ENDPROC
+
+
+ *******************************************************************************************************************
+ PROCEDURE decode_SpecialCodes_1_31
+ LPARAMETERS tcText
+ LOCAL I
+ FOR I = 0 TO 31
+ tcText = STRTRAN( tcText, '{' + TRANSFORM(I) + '}', CHR(I) )
+ ENDFOR
+ RETURN tcText
+ ENDPROC
ENDDEFINE
@@ -2491,9 +2532,18 @@ DEFINE CLASS c_conversor_prg_a_bin AS c_conversor_base
*toProject.setParsedProjInfoLine( @tcLine )
lnPos = AT( ' ', tcLine, 1 )
lnPos2 = AT( '&'+'&', tcLine )
- lcDefinedPAM = lcDefinedPAM ;
- + RTRIM( SUBSTR( tcLine, lnPos+1, lnPos2 - lnPos - 1 ), 0, ' ', CHR(9) ) + ' ' + SUBSTR( tcLine, lnPos2 + 3 ) ;
- + CR_LF
+
+ IF lnPos2 > 0
+ *-- Con comentarios
+ lcDefinedPAM = lcDefinedPAM ;
+ + RTRIM( SUBSTR( tcLine, lnPos+1, lnPos2 - lnPos - 1 ), 0, ' ', CHR(9) ) + ' ' + SUBSTR( tcLine, lnPos2 + 3 ) ;
+ + CR_LF
+ ELSE
+ *-- Sin comentarios
+ lcDefinedPAM = lcDefinedPAM ;
+ + RTRIM( SUBSTR( tcLine, lnPos+1 ), 0, ' ', CHR(9) ) + ' ' ;
+ + CR_LF
+ ENDIF
ENDCASE
ENDFOR
ENDWITH && THIS
@@ -4179,577 +4229,6 @@ DEFINE CLASS c_conversor_prg_a_pjx AS c_conversor_prg_a_bin
ENDDEFINE
-*******************************************************************************************************************
-DEFINE CLASS c_conversor_vcx_a_prg AS c_conversor_bin_a_prg
- #IF .F.
- LOCAL THIS AS c_conversor_vcx_a_prg OF 'FOXBIN2PRG.PRG'
- #ENDIF
- *_MEMBERDATA = [] ;
- + [] ;
- + []
-
- *******************************************************************************************************************
- PROCEDURE Convertir
- DODEFAULT()
-
- TRY
- LOCAL lnCodError, loEx AS EXCEPTION, loRegClass, loRegObj, lnMethodCount, laMethods(1), laCode(1), laProtected(1) ;
- , laPropsAndValues(1), laPropsAndComments(1), lnLastClass, lnRecno, lcMethods, lcObjName, la_NombresObjsOle(1)
- STORE 0 TO lnCodError, lnLastClass
- STORE '' TO laMethods(1), laCode(1), laProtected(1), laPropsAndComments(1)
- STORE NULL TO loRegClass, loRegObj
-
- USE (THIS.c_InputFile) SHARED NOUPDATE ALIAS TABLABIN
-
- INDEX ON PADR(LOWER(PLATFORM + IIF(EMPTY(PARENT),'',ALLTRIM(PARENT)+'.')+OBJNAME),240) TAG PARENT_OBJ OF TABLABIN ADDITIVE
- SET ORDER TO 0 IN TABLABIN
-
- THIS.write_PROGRAM_HEADER()
-
- THIS.get_NombresObjetosOLEPublic( @la_NombresObjsOle )
-
- THIS.write_DefinicionObjetosOLE()
-
- *-- Escribo los métodos ordenados
- lnLastClass = 0
-
- *----------------------------------------------
- *-- RECORRO LAS CLASES
- *----------------------------------------------
- SELECT TABLABIN
- SET ORDER TO PARENT_OBJ
-
- SCAN ALL FOR TABLABIN.PLATFORM = "WINDOWS" AND TABLABIN.RESERVED1=="Class"
- SCATTER MEMO NAME loRegClass
- lcObjName = ALLTRIM(loRegClass.OBJNAME)
-
- THIS.write_ENDDEFINE_SiCorresponde( lnLastClass )
-
- THIS.write_DEFINE_CLASS( @la_NombresObjsOle, @loRegClass )
-
- THIS.write_Define_Class_COMMENTS( @loRegClass )
-
- THIS.write_METADATA( @loRegClass )
-
- THIS.write_INCLUDE( @loRegClass )
-
- THIS.write_CLASS_PROPERTIES( @loRegClass, @laPropsAndValues, @laPropsAndComments, @laProtected )
-
-
- *-------------------------------------------------------------------------------
- *-- RECORRO LOS OBJETOS DENTRO DE LA CLASE ACTUAL PARA EXPORTAR SU DEFINICIÓN
- *-------------------------------------------------------------------------------
- lnRecno = RECNO()
- LOCATE FOR TABLABIN.PLATFORM = "WINDOWS" AND ALLTRIM(GETWORDNUM(TABLABIN.PARENT, 1, '.')) == lcObjName
-
- SCAN REST WHILE TABLABIN.PLATFORM = "WINDOWS" AND ALLTRIM(GETWORDNUM(TABLABIN.PARENT, 1, '.')) == lcObjName
- SCATTER MEMO NAME loRegObj
- ADDPROPERTY( loRegObj, '_ZOrder', RECNO()*100 ) && Para permitir insertar objetos manualmente entre medias al integrar cambios
- THIS.write_ADD_OBJECTS_WithProperties( @loRegObj )
- ENDSCAN
-
- GOTO RECORD (lnRecno)
-
-
- *-- OBTENGO LOS MÉTODOS DE LA CLASE PARA POSTERIOR TRATAMIENTO
- DIMENSION laMethods(1,3)
- lcMethods = ''
- THIS.SortMethod( loRegClass.METHODS, @laMethods, @laCode, '', @lnMethodCount )
-
- THIS.write_CLASS_METHODS( @lnMethodCount, @laMethods, @laCode, @laProtected, @laPropsAndComments )
-
- lnLastClass = 1
- lcMethods = ''
-
- *-- RECORRO LOS OBJETOS DENTRO DE LA CLASE ACTUAL PARA OBTENER SUS MÉTODOS
- lnRecno = RECNO()
- LOCATE FOR TABLABIN.PLATFORM = "WINDOWS" AND ALLTRIM(GETWORDNUM(TABLABIN.PARENT, 1, '.')) == lcObjName
-
- SCAN REST ;
- FOR TABLABIN.PLATFORM = "WINDOWS" AND NOT TABLABIN.RESERVED1=="Class" ;
- WHILE ALLTRIM(GETWORDNUM(TABLABIN.PARENT, 1, '.')) == lcObjName
-
- SCATTER MEMO NAME loRegObj
- THIS.get_ADD_OBJECT_METHODS( @loRegObj, @loRegClass, @lcMethods )
- ENDSCAN
-
- THIS.write_ALL_OBJECT_METHODS( @lcMethods )
-
- GOTO RECORD (lnRecno)
- ENDSCAN
-
- THIS.write_ENDDEFINE_SiCorresponde( lnLastClass )
-
- *-- Genero el VC2
- IF STRTOFILE( C_FB2PRG_CODE, THIS.c_OutputFile ) = 0
- ERROR 'No se puede generar el archivo [' + THIS.c_OutputFile + '] porque es ReadOnly'
- ENDIF
-
- 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
-ENDDEFINE
-
-
-*******************************************************************************************************************
-DEFINE CLASS c_conversor_scx_a_prg AS c_conversor_bin_a_prg
- #IF .F.
- LOCAL THIS AS c_conversor_scx_a_prg OF 'FOXBIN2PRG.PRG'
- #ENDIF
- *_MEMBERDATA = [] ;
- + [] ;
- + []
-
-
- *******************************************************************************************************************
- PROCEDURE Convertir
- DODEFAULT()
-
- TRY
- LOCAL lnCodError, loEx AS EXCEPTION, loRegClass, loRegObj, lnMethodCount, laMethods(1), laCode(1), laProtected(1) ;
- , laPropsAndValues(1), laPropsAndComments(1), lnLastClass, lnRecno, lcMethods, lcObjName, la_NombresObjsOle(1)
- STORE 0 TO lnCodError, lnLastClass
- STORE '' TO laMethods(1), laCode(1), laProtected(1), laPropsAndComments(1)
- STORE NULL TO loRegClass, loRegObj
-
- USE (THIS.c_InputFile) SHARED NOUPDATE ALIAS TABLABIN
-
- *IF FILE('C_SUB_OBJS.CDX')
- * ERASE 'C_SUB_OBJS.CDX'
- *ENDIF
- INDEX ON PADR(LOWER(PLATFORM + IIF(EMPTY(PARENT),'',ALLTRIM(PARENT)+'.')+OBJNAME),240) TAG PARENT_OBJ OF TABLABIN ADDITIVE
- SET ORDER TO 0 IN TABLABIN
-
- THIS.write_PROGRAM_HEADER()
-
- THIS.get_NombresObjetosOLEPublic( @la_NombresObjsOle )
-
- THIS.write_DefinicionObjetosOLE()
-
- *-- Escribo los métodos ordenados
- lnLastObj = 0
- lnLastClass = 0
-
- *----------------------------------------------
- *-- RECORRO LAS CLASES
- *----------------------------------------------
- SELECT TABLABIN
- SET ORDER TO PARENT_OBJ
- GOTO RECORD 1
-
- SCATTER FIELDS RESERVED8 MEMO NAME loRegClass
-
- IF NOT EMPTY(loRegClass.RESERVED8) THEN
- TEXT TO C_FB2PRG_CODE ADDITIVE TEXTMERGE NOSHOW FLAGS 1+2 PRETEXT 1+2
- #INCLUDE "<>"
-
- ENDTEXT
- ENDIF
-
-
- SCAN ALL FOR TABLABIN.PLATFORM = "WINDOWS" ;
- AND (EMPTY(TABLABIN.PARENT) ;
- AND (TABLABIN.BASECLASS == 'dataenvironment' OR TABLABIN.BASECLASS == 'form' OR TABLABIN.BASECLASS == 'formset' ) )
- SCATTER MEMO NAME loRegClass
- lcObjName = ALLTRIM(loRegClass.OBJNAME)
-
- THIS.write_ENDDEFINE_SiCorresponde( lnLastClass )
-
- THIS.write_DEFINE_CLASS( @la_NombresObjsOle, @loRegClass )
-
- THIS.write_Define_Class_COMMENTS( @loRegClass )
-
- THIS.write_METADATA( @loRegClass )
-
- THIS.write_INCLUDE( @loRegClass )
-
- THIS.write_CLASS_PROPERTIES( @loRegClass, @laPropsAndValues, @laPropsAndComments, @laProtected )
-
-
- *-------------------------------------------------------------------------------
- *-- RECORRO LOS OBJETOS DENTRO DE LA CLASE ACTUAL PARA EXPORTAR SU DEFINICIÓN
- *-------------------------------------------------------------------------------
- lnRecno = RECNO()
- LOCATE FOR TABLABIN.PLATFORM = "WINDOWS" AND ALLTRIM(GETWORDNUM(TABLABIN.PARENT, 1, '.')) == lcObjName
-
- SCAN REST WHILE TABLABIN.PLATFORM = "WINDOWS" AND ALLTRIM(GETWORDNUM(TABLABIN.PARENT, 1, '.')) == lcObjName
- SCATTER MEMO NAME loRegObj
- ADDPROPERTY( loRegObj, '_ZOrder', RECNO()*100 ) && Para permitir insertar objetos manualmente entre medias al integrar cambios
- THIS.write_ADD_OBJECTS_WithProperties( @loRegObj )
- ENDSCAN
-
- GOTO RECORD (lnRecno)
-
-
- *-- OBTENGO LOS MÉTODOS DE LA CLASE PARA POSTERIOR TRATAMIENTO
- DIMENSION laMethods(1,3)
- lcMethods = ''
- THIS.SortMethod( loRegClass.METHODS, @laMethods, @laCode, '', @lnMethodCount )
-
- THIS.write_CLASS_METHODS( @lnMethodCount, @laMethods, @laCode, @laProtected, @laPropsAndComments )
-
- lnLastClass = 1
- lcMethods = ''
-
- *-- RECORRO LOS OBJETOS DENTRO DE LA CLASE ACTUAL PARA OBTENER SUS MÉTODOS
- lnRecno = RECNO()
- LOCATE FOR TABLABIN.PLATFORM = "WINDOWS" AND ALLTRIM(GETWORDNUM(TABLABIN.PARENT, 1, '.')) == lcObjName
-
- SCAN REST ;
- FOR TABLABIN.PLATFORM = "WINDOWS" ;
- AND NOT (EMPTY(TABLABIN.PARENT) ;
- AND (TABLABIN.BASECLASS == 'dataenvironment' OR TABLABIN.BASECLASS == 'form' OR TABLABIN.BASECLASS == 'formset' ) ) ;
- WHILE ALLTRIM(GETWORDNUM(TABLABIN.PARENT, 1, '.')) == lcObjName
-
- SCATTER MEMO NAME loRegObj
- THIS.get_ADD_OBJECT_METHODS( @loRegObj, @loRegClass, @lcMethods )
- ENDSCAN
-
- THIS.write_ALL_OBJECT_METHODS( @lcMethods )
-
- GOTO RECORD (lnRecno)
- ENDSCAN
-
- THIS.write_ENDDEFINE_SiCorresponde( lnLastClass )
-
- *-- Genero el SC2
- IF STRTOFILE( C_FB2PRG_CODE, THIS.c_OutputFile ) = 0
- ERROR 'No se puede generar el archivo [' + THIS.c_OutputFile + '] porque es ReadOnly'
- ENDIF
-
- 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
-ENDDEFINE
-
-
-*******************************************************************************************************************
-DEFINE CLASS c_conversor_pjx_a_prg AS c_conversor_bin_a_prg
- #IF .F.
- LOCAL THIS AS c_conversor_pjx_a_prg OF 'FOXBIN2PRG.PRG'
- #ENDIF
- *_MEMBERDATA = [] ;
- * + [] ;
- * + []
-
-
- *******************************************************************************************************************
- PROCEDURE write_PROGRAM_HEADER
- *-- Cabecera del PRG e inicio de DEF_CLASS
- TEXT TO C_FB2PRG_CODE ADDITIVE TEXTMERGE NOSHOW FLAGS 1 PRETEXT 1+2
- *--------------------------------------------------------------------------------------------------------------------------------------------------------
- * (ES) AUTOGENERADO - PARA MANTENER INFORMACIÓN DE SERVIDORES DLL USAR "FOXBIN2PRG", SI NO IMPORTAN, EJECUTAR DIRECTAMENTE PARA REGENERAR EL PROYECTO.
- * (EN) AUTOGENERATED - TO KEEP DLL SERVER INFORMATION USE "FOXBIN2PRG", OTHERWISE YOU CAN EXECUTE DIRECTLY TO REGENERATE PROJECT.
- *--------------------------------------------------------------------------------------------------------------------------------------------------------
- <> Version="<>" SourceFile="<>" Generated="<>" <> (Para uso con Visual FoxPro 9.0)
- *
- ENDTEXT
- ENDPROC
-
-
- *******************************************************************************************************************
- PROCEDURE Convertir
- DODEFAULT()
-
- TRY
- LOCAL lnCodError, lcStr, lnPos, lnLen, lnServerCount, loReg, lcDevInfo ;
- , loEx AS EXCEPTION ;
- , loProject AS CL_PROJECT OF 'FOXBIN2PRG.PRG' ;
- , loServerHead AS CL_PROJ_SRV_HEAD OF 'FOXBIN2PRG.PRG' ;
- , loServerData AS CL_PROJ_SRV_DATA OF 'FOXBIN2PRG.PRG'
-
- STORE NULL TO loProject, loReg, loServerHead, loServerData
- USE (THIS.c_InputFile) SHARED NOUPDATE ALIAS TABLABIN
- loServerHead = CREATEOBJECT('CL_PROJ_SRV_HEAD')
-
-
- *-- Obtengo los archivos del proyecto
- loProject = CREATEOBJECT('CL_PROJECT')
- SCATTER MEMO NAME loReg
- loProject._HomeDir = ALLTRIM( loReg.HOMEDIR )
- loProject._ServerInfo = loReg.RESERVED2
- loProject._Debug = loReg.DEBUG
- loProject._Encrypted = loReg.ENCRYPT
- lcDevInfo = loReg.DEVINFO
-
-
- *--- Ubico el programa principal
- LOCATE FOR MAINPROG
-
- IF FOUND()
- loProject._MainProg = LOWER( ALLTRIM( NAME, 0, ' ', CHR(0) ) )
- ENDIF
-
-
- *-- Ubico el Project Hook
- LOCATE FOR TYPE == 'W'
-
- IF FOUND()
- loProject._ProjectHookLibrary = LOWER( ALLTRIM( NAME, 0, ' ', CHR(0) ) )
- loProject._ProjectHookClass = LOWER( ALLTRIM( RESERVED1, 0, ' ', CHR(0) ) )
- ENDIF
-
-
- *-- Ubico el icono del proyecto
- LOCATE FOR TYPE == 'i'
-
- IF FOUND()
- loProject._Icon = LOWER( ALLTRIM( NAME, 0, ' ', CHR(0) ) )
- ENDIF
-
-
- *-- Escaneo el proyecto
- SCAN ALL FOR NOT INLIST(TYPE, 'H','W','i' )
- SCATTER FIELDS NAME,TYPE,EXCLUDE,COMMENTS,CPID,TIMESTAMP,ID,OBJREV MEMO NAME loReg
- loReg.NAME = LOWER( ALLTRIM( loReg.NAME, 0, ' ', CHR(0) ) )
- loReg.COMMENTS = CHRTRAN( ALLTRIM( loReg.COMMENTS, 0, ' ', CHR(0) ), ['], ["] )
-
- TRY
- loProject.ADD( loReg, loReg.NAME )
- CATCH TO loEx WHEN loEx.ERRORNO = 2062 && The specified key already exists ==> loProject.ADD( loReg, loReg.NAME )
- *-- Saltear y no agregar el archivo duplicado / Bypass and not add the duplicated file
- ENDTRY
- ENDSCAN
-
-
- THIS.write_PROGRAM_HEADER()
-
-
- *-- Directorio de inicio
- TEXT TO C_FB2PRG_CODE ADDITIVE TEXTMERGE NOSHOW FLAGS 1+2 PRETEXT 1+2
- LPARAMETERS tcDir
-
- lcCurdir = SYS(5)+CURDIR()
- CD ( EVL( tcDir, JUSTPATH( SYS(16) ) ) )
-
- ENDTEXT
-
-
- *-- Información del programa
- loProject.parseDeviceInfo( lcDevInfo )
- C_FB2PRG_CODE = C_FB2PRG_CODE + loProject.getFormattedDeviceInfoText() + CR_LF
-
-
- *-- Información de los Servidores definidos
- IF NOT EMPTY(loProject._ServerInfo)
- loServerHead.parseServerInfo( loProject._ServerInfo )
- C_FB2PRG_CODE = C_FB2PRG_CODE + loServerHead.getFormattedServerText() + CR_LF
- loServerHead = NULL
- ENDIF
-
-
- *-- Generación del proyecto
- TEXT TO C_FB2PRG_CODE ADDITIVE TEXTMERGE NOSHOW FLAGS 1+2 PRETEXT 1+2
- <>
- FOR EACH loProj IN _VFP.Projects FOXOBJECT
- <>loProj.Close()
- ENDFOR
-
- STRTOFILE( '', '__newproject.f2b' )
- BUILD PROJECT <> FROM '__newproject.f2b'
- ENDTEXT
-
-
- *-- Abro el proyecto
- TEXT TO C_FB2PRG_CODE ADDITIVE TEXTMERGE NOSHOW FLAGS 1+2 PRETEXT 1+2
- FOR EACH loProj IN _VFP.Projects FOXOBJECT
- <>loProj.Close()
- ENDFOR
-
- MODIFY PROJECT '<>' NOWAIT NOSHOW NOPROJECTHOOK
-
- loProject = _VFP.Projects('<>')
-
- WITH loProject.FILES
- ENDTEXT
-
-
- *-- Definir archivos del proyecto y metadata: CPID, Timestamp, ID, etc.
- loProject.KEYSORT = 2
-
- FOR EACH loReg IN loProject &&FOXOBJECT
- TEXT TO C_FB2PRG_CODE ADDITIVE TEXTMERGE NOSHOW FLAGS 1+2 PRETEXT 1+2
- <>.ADD('<>')
- ENDTEXT
- TEXT TO C_FB2PRG_CODE ADDITIVE TEXTMERGE NOSHOW FLAGS 1 PRETEXT 1+2+4+8
- <><><<'&'>><<'&'>> <>
- Type="<>"
- Cpid="<>"
- Timestamp="<>"
- ID="<>"
- ObjRev="<>"
- <>
- ENDTEXT
- ENDFOR
-
- TEXT TO C_FB2PRG_CODE ADDITIVE TEXTMERGE NOSHOW FLAGS 1+2 PRETEXT 1+2
- <><>
-
- <>.ITEM('__newproject.f2b').Remove()
-
- ENDTEXT
-
-
- TEXT TO C_FB2PRG_CODE ADDITIVE TEXTMERGE NOSHOW FLAGS 1+2 PRETEXT 1+2
- <><>
- ENDTEXT
-
-
- *-- Agrego los comentarios
- loProject.KEYSORT = 2
-
- FOR EACH loReg IN loProject &&FOXOBJECT
- IF NOT EMPTY(loReg.COMMENTS)
- TEXT TO C_FB2PRG_CODE ADDITIVE TEXTMERGE NOSHOW FLAGS 1+2 PRETEXT 1+2
- <>.ITEM(lcCurdir + '<>').Description = '<>'
- ENDTEXT
- ENDIF
- ENDFOR
-
-
- *-- Exclusiones
- TEXT TO C_FB2PRG_CODE ADDITIVE TEXTMERGE NOSHOW FLAGS 1+2 PRETEXT 1+2
- <><>
-
- <><>
- ENDTEXT
-
- loProject.KEYSORT = 2
-
- FOR EACH loReg IN loProject &&FOXOBJECT
- IF loReg.EXCLUDE
- TEXT TO C_FB2PRG_CODE ADDITIVE TEXTMERGE NOSHOW FLAGS 1+2 PRETEXT 1+2
- <>.ITEM(lcCurdir + '<>').Exclude = .T.
- ENDTEXT
- ENDIF
- ENDFOR
-
-
- *-- Tipos de archivos especiales
- TEXT TO C_FB2PRG_CODE ADDITIVE TEXTMERGE NOSHOW FLAGS 1+2 PRETEXT 1+2
- <><>
-
- <><>
- ENDTEXT
-
- loProject.KEYSORT = 2
-
- FOR EACH loReg IN loProject &&FOXOBJECT
- IF INLIST( UPPER( JUSTEXT( loReg.NAME ) ), 'H','FPW' )
- TEXT TO C_FB2PRG_CODE ADDITIVE TEXTMERGE NOSHOW FLAGS 1+2 PRETEXT 1+2
- <>.ITEM(lcCurdir + '<>').Type = 'T'
- ENDTEXT
- ENDIF
- ENDFOR
-
-
- *-- ProjectHook, Debug, Encrypt, Build y cierre
- TEXT TO C_FB2PRG_CODE ADDITIVE TEXTMERGE NOSHOW FLAGS 1+2 PRETEXT 1+2
- <><>
- ENDWITH
-
- WITH loProject
- <><>
- ENDTEXT
-
- IF NOT EMPTY(loProject._MainProg)
- TEXT TO C_FB2PRG_CODE ADDITIVE TEXTMERGE NOSHOW FLAGS 1+2 PRETEXT 1+2
- <>.SetMain(lcCurdir + '<>')
- ENDTEXT
- ENDIF
-
- IF NOT EMPTY(loProject._Icon)
- TEXT TO C_FB2PRG_CODE ADDITIVE TEXTMERGE NOSHOW FLAGS 1+2 PRETEXT 1+2
- <>.Icon = lcCurdir + '<>'
- ENDTEXT
- ENDIF
-
- TEXT TO C_FB2PRG_CODE ADDITIVE TEXTMERGE NOSHOW FLAGS 1+2 PRETEXT 1+2
- <>.Debug = <>
- <>.Encrypted = <>
- <>*<.CmntStyle = <> />
- <>*<.NoLogo = <> />
- <>*<.SaveCode = <> />
- <>.ProjectHookLibrary = '<>'
- <>.ProjectHookClass = '<>'
- <><>
- ENDWITH
-
- ENDTEXT
-
-
- *-- Build y cierre
- * _VFP.Projects('<>').FILES('__newproject.f2b').Remove()
- TEXT TO C_FB2PRG_CODE ADDITIVE TEXTMERGE NOSHOW FLAGS 1+2 PRETEXT 1+2
-
- _VFP.Projects('<>').Close()
- ENDTEXT
-
- *-- Restauro Directorio de inicio
- TEXT TO C_FB2PRG_CODE ADDITIVE TEXTMERGE NOSHOW FLAGS 1+2 PRETEXT 1+2
- *ERASE '__newproject.f2b'
- CD (lcCurdir)
- RETURN
- ENDTEXT
-
-
- *-- Genero el PJ2
- IF STRTOFILE( C_FB2PRG_CODE, THIS.c_OutputFile ) = 0
- ERROR 'No se puede generar el archivo [' + THIS.c_OutputFile + '] porque es ReadOnly'
- ENDIF
- *COMPILE ( THIS.c_outputFile )
-
-
- CATCH TO loEx
- lnCodError = loEx.ERRORNO
-
- DO CASE
- CASE lnCodError = 2062 && The specified key already exists ==> loProject.ADD( loReg, loReg.NAME )
- loEx.USERVALUE = 'Archivo duplicado: ' + loReg.NAME
- ENDCASE
-
- IF THIS.l_Debug AND _VFP.STARTMODE = 0
- SET STEP ON
- ENDIF
-
- THROW
-
- FINALLY
- USE IN (SELECT("TABLABIN"))
-
- ENDTRY
-
- RETURN lnCodError
- ENDPROC
-ENDDEFINE
-
-
*******************************************************************************************************************
DEFINE CLASS c_conversor_bin_a_prg AS c_conversor_base
#IF .F.
@@ -4770,8 +4249,11 @@ DEFINE CLASS c_conversor_bin_a_prg AS c_conversor_base
+ [] ;
+ [] ;
+ [] ;
+ + [] ;
+ [] ;
+ [] ;
+ + [] ;
+ + [] ;
+ [] ;
+ [] ;
+ [] ;
@@ -5045,18 +4527,28 @@ DEFINE CLASS c_conversor_bin_a_prg AS c_conversor_base
lcPropsMethodsDefd = ''
TEXT TO C_FB2PRG_CODE ADDITIVE TEXTMERGE NOSHOW FLAGS 1+2 PRETEXT 1+2
- <><>
+ <><>
ENDTEXT
FOR I = 1 TO tnPropsAndComments_Count
+ IF EMPTY(taPropsAndComments(I,1))
+ LOOP
+ ENDIF
+
lcType = LEFT( taPropsAndComments(I,1), 1 )
lcType = ICASE( lcType == '*', 'm' ;
, lcType == '^', 'a' ;
, 'p' )
TEXT TO C_FB2PRG_CODE ADDITIVE TEXTMERGE NOSHOW FLAGS 1+2 PRETEXT 1+2
- <><>*<>: <> <<'&'>><<'&'>> <>
+ <><>*<>: <>
ENDTEXT
+
+ IF NOT EMPTY(taPropsAndComments(I,2))
+ TEXT TO C_FB2PRG_CODE ADDITIVE TEXTMERGE NOSHOW FLAGS 1 PRETEXT 1+2
+ <><><<'&'>><<'&'>> <>
+ ENDTEXT
+ ENDIF
ENDFOR
TEXT TO C_FB2PRG_CODE ADDITIVE TEXTMERGE NOSHOW FLAGS 1+2 PRETEXT 1+2
@@ -5270,6 +4762,339 @@ DEFINE CLASS c_conversor_bin_a_prg AS c_conversor_base
ENDTEXT
ENDIF
ENDPROC
+
+
+ *******************************************************************************************************************
+ PROCEDURE write_CABECERA_REPORTE
+ LPARAMETERS toReg
+
+ TRY
+ LOCAL lc_TAG_REPORTE
+ lc_TAG_REPORTE_I = '<' + 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="<>"
+ ENDTEXT
+
+ TEXT TO C_FB2PRG_CODE ADDITIVE TEXTMERGE NOSHOW FLAGS 1 PRETEXT 1+2
+ objcode="<>" name="<>"
+ ENDTEXT
+
+ TEXT TO C_FB2PRG_CODE ADDITIVE TEXTMERGE NOSHOW FLAGS 1 PRETEXT 1+2
+ vpos="<>" hpos="<>" height="toReg.height" width="toReg.width"
+ ENDTEXT
+
+ TEXT TO C_FB2PRG_CODE ADDITIVE TEXTMERGE NOSHOW FLAGS 1 PRETEXT 1+2
+ picture="<>" order="<>" unique="<>" comment="<>"
+ ENDTEXT
+
+ TEXT TO C_FB2PRG_CODE ADDITIVE TEXTMERGE NOSHOW FLAGS 1 PRETEXT 1+2
+ environ="<>" boxchar="<>" fillchar="<>"
+ ENDTEXT
+
+ TEXT TO C_FB2PRG_CODE ADDITIVE TEXTMERGE NOSHOW FLAGS 1 PRETEXT 1+2
+ tag="<>" tag2="<>" penred="<>"
+ ENDTEXT
+
+ TEXT TO C_FB2PRG_CODE ADDITIVE TEXTMERGE NOSHOW FLAGS 1 PRETEXT 1+2
+ pengreen="<>" penblue="<>" fillred="<>" fillgreen="<>"
+ ENDTEXT
+
+ TEXT TO C_FB2PRG_CODE ADDITIVE TEXTMERGE NOSHOW FLAGS 1 PRETEXT 1+2
+ fillblue="<>" pensize="<>" penpat="<>" fillpat="<>"
+ ENDTEXT
+
+ TEXT TO C_FB2PRG_CODE ADDITIVE TEXTMERGE NOSHOW FLAGS 1 PRETEXT 1+2
+ fontface="<>" fontstyle="<>" fontsize="<>" mode="<>"
+ 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="<>"
+ ENDTEXT
+
+ TEXT TO C_FB2PRG_CODE ADDITIVE TEXTMERGE NOSHOW FLAGS 1 PRETEXT 1+2
+ top="<>" bottom="<>" suptype="<>" suprest="<>" norepeat="<>"
+ ENDTEXT
+
+ TEXT TO C_FB2PRG_CODE ADDITIVE TEXTMERGE NOSHOW FLAGS 1 PRETEXT 1+2
+ resetrpt="<>" pagebreak="<>" colbreak="<>" resetpage="<>"
+ ENDTEXT
+
+ TEXT TO C_FB2PRG_CODE ADDITIVE TEXTMERGE NOSHOW FLAGS 1 PRETEXT 1+2
+ general="<>" spacing="<>" double="<>" swapheader="<>"
+ ENDTEXT
+
+ TEXT TO C_FB2PRG_CODE ADDITIVE TEXTMERGE NOSHOW FLAGS 1 PRETEXT 1+2
+ swapfooter="<>" ejectbefor="<>" ejectafter="<>" plain="<>"
+ ENDTEXT
+
+ TEXT TO C_FB2PRG_CODE ADDITIVE TEXTMERGE NOSHOW FLAGS 1 PRETEXT 1+2
+ summary="<>" addalias="<>" offset="<>" topmargin="<>"
+ ENDTEXT
+
+ TEXT TO C_FB2PRG_CODE ADDITIVE TEXTMERGE NOSHOW FLAGS 1 PRETEXT 1+2
+ botmargin="<>" totaltype="<>" resettotal="<>" resoid="<>"
+ ENDTEXT
+
+ TEXT TO C_FB2PRG_CODE ADDITIVE TEXTMERGE NOSHOW FLAGS 1 PRETEXT 1+2
+ curpos="<>" supalways="<>" supovflow="<>" suprpcol="<>"
+ ENDTEXT
+
+ TEXT TO C_FB2PRG_CODE ADDITIVE TEXTMERGE NOSHOW FLAGS 1 PRETEXT 1+2
+ supgroup="<>" supvalchng="<>" supexpr="<>" user="<>"
+ ENDTEXT
+
+ TEXT TO C_FB2PRG_CODE ADDITIVE TEXTMERGE NOSHOW FLAGS 1+2 PRETEXT 1+2
+ style=>]]>
+ expr=>]]>
+ ENDTEXT
+
+ TEXT TO C_FB2PRG_CODE ADDITIVE TEXTMERGE NOSHOW FLAGS 1 PRETEXT 1+2
+ <>
+ ENDTEXT
+
+ CATCH TO loEx
+ IF THIS.l_Debug AND _VFP.STARTMODE = 0
+ SET STEP ON
+ ENDIF
+
+ THROW
+
+ ENDTRY
+
+ RETURN
+ ENDPROC
+
+
+ *******************************************************************************************************************
+ PROCEDURE write_DETALLE_REPORTE
+ LPARAMETERS toReg
+
+ TRY
+ LOCAL lc_TAG_REPORTE
+ lc_TAG_REPORTE_I = '<' + 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="<>"
+ ENDTEXT
+
+ TEXT TO C_FB2PRG_CODE ADDITIVE TEXTMERGE NOSHOW FLAGS 1 PRETEXT 1+2
+ objcode="<>" name="<>"
+ ENDTEXT
+
+ TEXT TO C_FB2PRG_CODE ADDITIVE TEXTMERGE NOSHOW FLAGS 1 PRETEXT 1+2
+ vpos="<>" hpos="<>" height="toReg.height" width="toReg.width"
+ ENDTEXT
+
+ TEXT TO C_FB2PRG_CODE ADDITIVE TEXTMERGE NOSHOW FLAGS 1 PRETEXT 1+2
+ picture="<>" order="<>" unique="<>" comment="<>"
+ ENDTEXT
+
+ TEXT TO C_FB2PRG_CODE ADDITIVE TEXTMERGE NOSHOW FLAGS 1 PRETEXT 1+2
+ environ="<>" boxchar="<>" fillchar="<>"
+ ENDTEXT
+
+ TEXT TO C_FB2PRG_CODE ADDITIVE TEXTMERGE NOSHOW FLAGS 1 PRETEXT 1+2
+ tag="<>" tag2="<>" penred="<>"
+ ENDTEXT
+
+ TEXT TO C_FB2PRG_CODE ADDITIVE TEXTMERGE NOSHOW FLAGS 1 PRETEXT 1+2
+ pengreen="<>" penblue="<>" fillred="<>" fillgreen="<>"
+ ENDTEXT
+
+ TEXT TO C_FB2PRG_CODE ADDITIVE TEXTMERGE NOSHOW FLAGS 1 PRETEXT 1+2
+ fillblue="<>" pensize="<>" penpat="<>" fillpat="<>"
+ ENDTEXT
+
+ TEXT TO C_FB2PRG_CODE ADDITIVE TEXTMERGE NOSHOW FLAGS 1 PRETEXT 1+2
+ fontface="<>" fontstyle="<>" fontsize="<>" mode="<>"
+ 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+2
+ gridh="<>" float="<>" stretch="<>" stretchtop="<>"
+ ENDTEXT
+
+ TEXT TO C_FB2PRG_CODE ADDITIVE TEXTMERGE NOSHOW FLAGS 1 PRETEXT 1+2
+ top="<>" bottom="<>" suptype="<>" suprest="<>" norepeat="<>"
+ ENDTEXT
+
+ TEXT TO C_FB2PRG_CODE ADDITIVE TEXTMERGE NOSHOW FLAGS 1 PRETEXT 1+2
+ resetrpt="<>" pagebreak="<>" colbreak="<>" resetpage="<>"
+ ENDTEXT
+
+ TEXT TO C_FB2PRG_CODE ADDITIVE TEXTMERGE NOSHOW FLAGS 1 PRETEXT 1+2
+ general="<>" spacing="<>" double="<>" swapheader="<>"
+ ENDTEXT
+
+ TEXT TO C_FB2PRG_CODE ADDITIVE TEXTMERGE NOSHOW FLAGS 1 PRETEXT 1+2
+ swapfooter="<>" ejectbefor="<>" ejectafter="<>" plain="<>"
+ ENDTEXT
+
+ TEXT TO C_FB2PRG_CODE ADDITIVE TEXTMERGE NOSHOW FLAGS 1 PRETEXT 1+2
+ summary="<>" addalias="<>" offset="<>" topmargin="<>"
+ ENDTEXT
+
+ TEXT TO C_FB2PRG_CODE ADDITIVE TEXTMERGE NOSHOW FLAGS 1 PRETEXT 1+2
+ botmargin="<>" totaltype="<>" resettotal="<>" resoid="<>"
+ ENDTEXT
+
+ TEXT TO C_FB2PRG_CODE ADDITIVE TEXTMERGE NOSHOW FLAGS 1 PRETEXT 1+2
+ curpos="<>" supalways="<>" supovflow="<>" suprpcol="<>"
+ ENDTEXT
+
+ TEXT TO C_FB2PRG_CODE ADDITIVE TEXTMERGE NOSHOW FLAGS 1 PRETEXT 1+2
+ supgroup="<>" supvalchng="<>" supexpr="<>" user="<>"
+ ENDTEXT
+
+ TEXT TO C_FB2PRG_CODE ADDITIVE TEXTMERGE NOSHOW FLAGS 1+2 PRETEXT 1+2
+ style="<>"
+ expr="<>"
+ ENDTEXT
+
+ TEXT TO C_FB2PRG_CODE ADDITIVE TEXTMERGE NOSHOW FLAGS 1 PRETEXT 1+2
+ <>
+ ENDTEXT
+
+ CATCH TO loEx
+ IF THIS.l_Debug AND _VFP.STARTMODE = 0
+ SET STEP ON
+ ENDIF
+
+ THROW
+
+ ENDTRY
+
+ RETURN
+ ENDPROC
+
+
+ *******************************************************************************************************************
+ PROCEDURE write_DATAENVIRONMENT_REPORTE
+ LPARAMETERS toReg
+
+ TRY
+ LOCAL lc_TAG_REPORTE
+ lc_TAG_REPORTE_I = '<' + 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="<>"
+ ENDTEXT
+
+ TEXT TO C_FB2PRG_CODE ADDITIVE TEXTMERGE NOSHOW FLAGS 1 PRETEXT 1+2
+ objcode="<>" name="<>"
+ ENDTEXT
+
+ TEXT TO C_FB2PRG_CODE ADDITIVE TEXTMERGE NOSHOW FLAGS 1 PRETEXT 1+2
+ vpos="<>" hpos="<>" height="toReg.height" width="toReg.width"
+ ENDTEXT
+
+ TEXT TO C_FB2PRG_CODE ADDITIVE TEXTMERGE NOSHOW FLAGS 1 PRETEXT 1+2
+ picture="<>" order="<>" unique="<>" comment="<>"
+ ENDTEXT
+
+ TEXT TO C_FB2PRG_CODE ADDITIVE TEXTMERGE NOSHOW FLAGS 1 PRETEXT 1+2
+ environ="<>" boxchar="<>" fillchar="<>"
+ ENDTEXT
+
+ TEXT TO C_FB2PRG_CODE ADDITIVE TEXTMERGE NOSHOW FLAGS 1 PRETEXT 1+2
+ tag="<>" tag2="<>" penred="<>"
+ ENDTEXT
+
+ TEXT TO C_FB2PRG_CODE ADDITIVE TEXTMERGE NOSHOW FLAGS 1 PRETEXT 1+2
+ pengreen="<>" penblue="<>" fillred="<>" fillgreen="<>"
+ ENDTEXT
+
+ TEXT TO C_FB2PRG_CODE ADDITIVE TEXTMERGE NOSHOW FLAGS 1 PRETEXT 1+2
+ fillblue="<>" pensize="<