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:
@@ -18,7 +18,8 @@ Demo video using FoxBin2Prg with PlasticSCM: http://youtu.be/sE4wQ50Itqg
|
||||
Change History -------------------------------------------------------------
|
||||
|
||||
2014/08/07 v1.19.30
|
||||
- Bug Fix vcx/scx: Bad EndText block detection when the previous line end with "," or ";" (Jim Nelson)
|
||||
- Bug Fix vcx/scx: Bad EndText block detection when the previous line ends with "," or ";" (Jim Nelson)
|
||||
- Bug Fix vcx/scx: Some methods are not alphabetically sorted in some inheritance situations (Ryan Harris)
|
||||
|
||||
2014/08/01 v1.19.29
|
||||
- Bug Fix vcx/scx: Bad Text block detection when the previous line ends with "," (M_N_M)
|
||||
|
||||
@@ -873,6 +873,64 @@ DEFINE CLASS ut__foxbin2prg AS FxuTestCase OF FxuTestCase.prg
|
||||
ENDFUNC
|
||||
|
||||
|
||||
*******************************************************************************************************************************************
|
||||
FUNCTION Deberia_Ejecutar_FOXBIN2PRG_ParaLaLibreria_CLASSLIB_METHOD_ORDER_BUG_TEST_VCX_YValidarEl_BUG_DelOrdenDeMetodosDeClases_v1_19_29
|
||||
LOCAL lnCodError, lnCodError_Esperado ;
|
||||
, lc_File, lc_InputFile, lc_OutputFile, lcParent, lcClass, lcObjName, loReg_Esperado, loReg, lcTipoBinario, lcTXT0, lcTXT1 ;
|
||||
, loModulo AS CL_CLASE OF "FOXBIN2PRG.PRG" ;
|
||||
, loCnv AS c_foxbin2prg OF "FOXBIN2PRG.PRG" ;
|
||||
, loEx AS EXCEPTION
|
||||
#IF .F.
|
||||
PUBLIC oFXU_LIB AS CL_FXU_CONFIG OF 'TESTS\fxu_lib_objetos_y_funciones_de_soporte.PRG'
|
||||
#ENDIF
|
||||
|
||||
TRY
|
||||
loEx = NULL
|
||||
loCnv = NEWOBJECT("c_foxbin2prg", "FOXBIN2PRG.PRG")
|
||||
*loCnv.l_Debug = .F.
|
||||
loCnv.l_ShowErrors = .F.
|
||||
*loCnv.l_Test = .T.
|
||||
*loCnv.l_PropSort_Enabled = .F. && Para buscar diferencias
|
||||
*loCnv.l_MethodSort_Enabled = .F. && Para buscar diferencias
|
||||
|
||||
|
||||
*-- DATOS DE ENTRADA
|
||||
STORE 0 TO lnCodError
|
||||
lc_File = 'CLASSLIB_METHOD_ORDER_BUG_TEST.VCX'
|
||||
lc_InputFile = FORCEPATH( lc_File, oFXU_LIB.cPathDatosReadOnly )
|
||||
lc_OutputFile = FORCEPATH( lc_File, oFXU_LIB.cPathDatosTest )
|
||||
lcTipoBinario = UPPER( JUSTEXT( lc_OutputFile ) )
|
||||
|
||||
oFXU_LIB.copiarArchivosParaTest( FORCEEXT( lc_File, LEFT( JUSTEXT(lc_File),2 ) + '?' ) )
|
||||
|
||||
loCnv.Convertir( lc_OutputFile, .F., .F., .T. )
|
||||
*loCnv.Convertir( FORCEEXT(lc_OutputFile, LEFT( JUSTEXT(lc_File),2 ) + '2' ), .F., .F., .T. )
|
||||
|
||||
*-- Comparo resultados
|
||||
lcTXT0 = FORCEPATH( FORCEEXT(lc_File,'VC2'), ADDBS( oFXU_LIB.cPathDatosReadOnly ) )
|
||||
lcTXT1 = FORCEPATH( FORCEEXT(lc_File,'VC2'), ADDBS( oFXU_LIB.cPathDatosTest ) )
|
||||
|
||||
llEqual = ( FILETOSTR( lcTXT0 ) == FILETOSTR( lcTXT1 ) )
|
||||
|
||||
THIS.messageout( "Se comparan archivos VC2, para saber si hay cambios" )
|
||||
THIS.messageout( "lcTXT0 = " + lcTXT0 )
|
||||
THIS.messageout( "lcTXT1 = " + lcTXT1 )
|
||||
|
||||
THIS.asserttrue( llEqual, "COMPARACI<43>N DE VC2" )
|
||||
|
||||
CATCH TO loEx
|
||||
THIS.Evaluate_results( loEx, lnCodError_Esperado, lc_OutputFile, lcParent, lcClass, lcObjName, loReg_Esperado )
|
||||
|
||||
FINALLY
|
||||
USE IN (SELECT("ARCHIVOBIN_IN"))
|
||||
USE IN (SELECT("TABLABIN"))
|
||||
STORE NULL TO loModulo, loCnv
|
||||
RELEASE loModulo, loCnv
|
||||
ENDTRY
|
||||
|
||||
ENDFUNC
|
||||
|
||||
|
||||
*******************************************************************************************************************************************
|
||||
FUNCTION Deberia_Ejecutar_FOXBIN2PRG_ParaLaLibreria_FB2P_TEST_VCX_YValidarEl_BUG_Del_PROCEDURE_SIN_ENDPROC
|
||||
LOCAL lnCodError, lnCodError_Esperado ;
|
||||
|
||||
@@ -72,32 +72,36 @@ DEFINE CLASS ut__foxbin2prg__c_conversor_base__IdentificarBloquesDeExclusion as
|
||||
*******************************************************************************************************************************************
|
||||
FUNCTION Deberia_ObtenerLaUbicacionDelBloque_IF_ENDIF_CuandoCodigoCon_IF_ENDIF_predominante_esEvaluado
|
||||
LOCAL lcMethod, laLineas(1), lnLineas, laPos(1,2), lnPos_Count, laExpected_Pos(2,2) ;
|
||||
, laLineasExclusion(10), laLineasExclusion_Esperadas(10)
|
||||
, laLineasExclusion(12), laLineasExclusion_Esperadas(12)
|
||||
LOCAL loObj AS c_conversor_prg_a_bin OF "FOXBIN2PRG.PRG"
|
||||
loObj = THIS.icObj
|
||||
|
||||
*-- Input and expected params
|
||||
STORE '' TO lcMethod
|
||||
laExpected_Pos(1,1) = 3
|
||||
laExpected_Pos(1,2) = 5
|
||||
laExpected_Pos(2,1) = 7
|
||||
laExpected_Pos(2,2) = 9
|
||||
laExpected_Pos(1,2) = 6
|
||||
laExpected_Pos(2,1) = 8
|
||||
laExpected_Pos(2,2) = 11
|
||||
laLineasExclusion_Esperadas( 3) = .T.
|
||||
laLineasExclusion_Esperadas( 4) = .T.
|
||||
laLineasExclusion_Esperadas( 5) = .T.
|
||||
laLineasExclusion_Esperadas( 7) = .T.
|
||||
laLineasExclusion_Esperadas( 8) = .T.
|
||||
laLineasExclusion_Esperadas( 9) = .T.
|
||||
laLineasExclusion_Esperadas(10) = .T.
|
||||
laLineasExclusion_Esperadas(11) = .T.
|
||||
|
||||
TEXT TO lcMethod NOSHOW TEXTMERGE FLAGS 1 PRETEXT 1+2
|
||||
<<C_PROC>> myMethod_B
|
||||
*-- Code Block
|
||||
<<C_IF_F>>
|
||||
<<C_TEXT>>
|
||||
value ;
|
||||
<<C_ENDIF>>
|
||||
*-- Code Block
|
||||
<<C_IF_F>>
|
||||
<<C_ENDTEXT>>
|
||||
value ,
|
||||
<<C_ENDIF>>
|
||||
<<C_ENDPROC>>
|
||||
ENDTEXT
|
||||
@@ -138,7 +142,7 @@ DEFINE CLASS ut__foxbin2prg__c_conversor_base__IdentificarBloquesDeExclusion as
|
||||
<<C_IF_F>>
|
||||
<<C_IF_F>>
|
||||
<<C_TEXT>>
|
||||
*-- Code Block
|
||||
*-- Code Block ;
|
||||
<<C_ENDTEXT>>
|
||||
<<C_ENDIF>>
|
||||
<<C_ENDIF>>
|
||||
@@ -159,32 +163,36 @@ DEFINE CLASS ut__foxbin2prg__c_conversor_base__IdentificarBloquesDeExclusion as
|
||||
*******************************************************************************************************************************************
|
||||
FUNCTION Deberia_ObtenerLaUbicacionDelBloque_TEXT_ENDTEXT_CuandoCodigoCon_TEXT_ENDTEXT_predominante_esEvaluado
|
||||
LOCAL lcMethod, laLineas(1), lnLineas, laPos(1,2), lnPos_Count, laExpected_Pos(2,2) ;
|
||||
, laLineasExclusion(10), laLineasExclusion_Esperadas(10)
|
||||
, laLineasExclusion(12), laLineasExclusion_Esperadas(12)
|
||||
LOCAL loObj AS c_conversor_prg_a_bin OF "FOXBIN2PRG.PRG"
|
||||
loObj = THIS.icObj
|
||||
|
||||
*-- Input and expected params
|
||||
STORE '' TO lcMethod
|
||||
laExpected_Pos(1,1) = 3
|
||||
laExpected_Pos(1,2) = 5
|
||||
laExpected_Pos(2,1) = 7
|
||||
laExpected_Pos(2,2) = 9
|
||||
laExpected_Pos(1,2) = 6
|
||||
laExpected_Pos(2,1) = 8
|
||||
laExpected_Pos(2,2) = 11
|
||||
laLineasExclusion_Esperadas( 3) = .T.
|
||||
laLineasExclusion_Esperadas( 4) = .T.
|
||||
laLineasExclusion_Esperadas( 5) = .T.
|
||||
laLineasExclusion_Esperadas( 7) = .T.
|
||||
laLineasExclusion_Esperadas( 8) = .T.
|
||||
laLineasExclusion_Esperadas( 9) = .T.
|
||||
laLineasExclusion_Esperadas(10) = .T.
|
||||
laLineasExclusion_Esperadas(11) = .T.
|
||||
|
||||
TEXT TO lcMethod NOSHOW TEXTMERGE FLAGS 1 PRETEXT 1+2
|
||||
<<C_PROC>> myMethod_B
|
||||
*-- Code Block
|
||||
<<C_TEXT>>
|
||||
<<C_IF_F>>
|
||||
value ;
|
||||
<<C_ENDTEXT>>
|
||||
*-- Code Block
|
||||
<<C_TEXT>>
|
||||
<<C_ENDIF>>
|
||||
value ,
|
||||
<<C_ENDTEXT>>
|
||||
<<C_ENDPROC>>
|
||||
ENDTEXT
|
||||
|
||||
BIN
foxbin2prg.exe
BIN
foxbin2prg.exe
Binary file not shown.
@@ -109,6 +109,7 @@ WITH loProject.FILES
|
||||
.ADD('tests\ut__foxbin2prg__c_conversor_prg_a_bin__analizarasignacion_tag_indicado.prg') && *< FileMetadata: Type="P" Cpid="1252" Timestamp="0" ID="0" ObjRev="544" />
|
||||
.ADD('tests\ut__foxbin2prg__c_conversor_prg_a_bin__insert_allobjects.prg') && *< FileMetadata: Type="P" Cpid="1252" Timestamp="0" ID="0" ObjRev="544" />
|
||||
.ADD('tests\ut__foxbin2prg__c_foxbin2prg__evaluarconfiguracion.prg') && *< FileMetadata: Type="P" Cpid="1252" Timestamp="0" ID="0" ObjRev="544" />
|
||||
.ADD('tests\ut__foxbin2prg__c_foxbin2prg__filenamefoundinfilter.prg') && *< FileMetadata: Type="P" Cpid="1252" Timestamp="0" ID="0" ObjRev="0" />
|
||||
*</BuildProj>
|
||||
|
||||
.ITEM('__newproject.f2b').Remove()
|
||||
@@ -137,6 +138,7 @@ WITH loProject.FILES
|
||||
.ITEM(lcCurdir + 'tests\ut__foxbin2prg__c_conversor_prg_a_bin__analizarasignacion_tag_indicado.prg').Exclude = .T.
|
||||
.ITEM(lcCurdir + 'tests\ut__foxbin2prg__c_conversor_prg_a_bin__insert_allobjects.prg').Exclude = .T.
|
||||
.ITEM(lcCurdir + 'tests\ut__foxbin2prg__c_foxbin2prg__evaluarconfiguracion.prg').Exclude = .T.
|
||||
.ITEM(lcCurdir + 'tests\ut__foxbin2prg__c_foxbin2prg__filenamefoundinfilter.prg').Exclude = .T.
|
||||
*</ExcludedFiles>
|
||||
|
||||
*<TextFiles>
|
||||
|
||||
BIN
foxbin2prg.pjt
BIN
foxbin2prg.pjt
Binary file not shown.
BIN
foxbin2prg.pjx
BIN
foxbin2prg.pjx
Binary file not shown.
218
foxbin2prg.prg
218
foxbin2prg.prg
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user