Changeset: 447 v1.19.35

- Mejora: Generar siempre el mismo Timestamp y UniqueID para los binarios minimizaría los cambios al regenerarlos (Marcio Gomez G.)
This commit is contained in:
fdbozzo
2014-10-05 22:48:57 +02:00
8 changed files with 58 additions and 31 deletions

View File

@@ -2,8 +2,8 @@ Lparameters toUpdateInfo
Local lcNote Local lcNote
With toUpdateInfo With toUpdateInfo
.VersionNumber = 'v1.19.34' .VersionNumber = 'v1.19.35'
.VersionDate = Date(2014,09,19) .VersionDate = Date(2014,09,26)
.SourceFileUrl = 'http://vfpxrepository.com/dl/thorupdate/Projects/FoxBin2Prg/FoxBin2Prg.Zip' .SourceFileUrl = 'http://vfpxrepository.com/dl/thorupdate/Projects/FoxBin2Prg/FoxBin2Prg.Zip'
.Link = 'http://vfpx.codeplex.com/wikipage?title=FoxBin2PRG' .Link = 'http://vfpx.codeplex.com/wikipage?title=FoxBin2PRG'
@@ -17,6 +17,9 @@ Demo video using FoxBin2Prg with PlasticSCM: http://youtu.be/sE4wQ50Itqg
Change History ------------------------------------------------------------- Change History -------------------------------------------------------------
2014/09/26 v1.19.35
- Enhancement: Always generate the same Timestamp and UniqueID for binaries, for minimizing differences when regenerating them (Marcio Gomez G.)
2014/09/19 v1.19.34 2014/09/19 v1.19.34
- Bug Fix: If run from VFP Command Window and there is a file in use, an error is thrown because can't capitalize source file (Jim Nelson) - Bug Fix: If run from VFP Command Window and there is a file in use, an error is thrown because can't capitalize source file (Jim Nelson)

View File

@@ -1047,7 +1047,7 @@ DEFINE CLASS ut__foxbin2prg AS FxuTestCase OF FxuTestCase.prg
loEx = NULL loEx = NULL
loCnv = NEWOBJECT("c_foxbin2prg", "FOXBIN2PRG.PRG") loCnv = NEWOBJECT("c_foxbin2prg", "FOXBIN2PRG.PRG")
loCnv.EvaluarConfiguracion( '', '', '', '1', '1', '4' ) loCnv.EvaluarConfiguracion( '1', '1', '', '0', '1', '4' )
*loCnv.n_ExtraBackupLevels = 4 *loCnv.n_ExtraBackupLevels = 4
*loCnv.l_Debug = .T. *loCnv.l_Debug = .T.
*loCnv.l_ShowErrors = .F. *loCnv.l_ShowErrors = .F.
@@ -1352,7 +1352,7 @@ DEFINE CLASS ut__foxbin2prg AS FxuTestCase OF FxuTestCase.prg
TRY TRY
loEx = NULL loEx = NULL
loCnv = NEWOBJECT("c_foxbin2prg", "FOXBIN2PRG.PRG") loCnv = NEWOBJECT("c_foxbin2prg", "FOXBIN2PRG.PRG")
loCnv.EvaluarConfiguracion( '', '', '1', '1', '1', '4', '1', '0' ) loCnv.EvaluarConfiguracion( '1', '1', '1', '1', '1', '4', '1', '0' )
*loCnv.l_DropNullCharsFromCode = .T. *loCnv.l_DropNullCharsFromCode = .T.
*loCnv.l_Test = .T. *loCnv.l_Test = .T.
@@ -1409,7 +1409,7 @@ DEFINE CLASS ut__foxbin2prg AS FxuTestCase OF FxuTestCase.prg
TRY TRY
loEx = NULL loEx = NULL
loCnv = NEWOBJECT("c_foxbin2prg", "FOXBIN2PRG.PRG") loCnv = NEWOBJECT("c_foxbin2prg", "FOXBIN2PRG.PRG")
loCnv.EvaluarConfiguracion( '', '', '1', '1', '1', '4', '1', '0' ) loCnv.EvaluarConfiguracion( '1', '1', '1', '0', '1', '4', '1', '0' )
loCnv.l_DropNullCharsFromCode = .F. loCnv.l_DropNullCharsFromCode = .F.
*loCnv.l_Test = .T. *loCnv.l_Test = .T.
@@ -1473,7 +1473,7 @@ DEFINE CLASS ut__foxbin2prg AS FxuTestCase OF FxuTestCase.prg
TRY TRY
loEx = NULL loEx = NULL
loCnv = NEWOBJECT("c_foxbin2prg", "FOXBIN2PRG.PRG") loCnv = NEWOBJECT("c_foxbin2prg", "FOXBIN2PRG.PRG")
loCnv.EvaluarConfiguracion( '', '', '1', '1', '1', '4', '1', '0' ) loCnv.EvaluarConfiguracion( '1', '1', '1', '0', '1', '4', '1', '0' )
*loCnv.l_Test = .T. *loCnv.l_Test = .T.
@@ -1613,7 +1613,7 @@ DEFINE CLASS ut__foxbin2prg AS FxuTestCase OF FxuTestCase.prg
goFXU = THIS goFXU = THIS
loEx = NULL loEx = NULL
loCnv = NEWOBJECT("c_foxbin2prg", "FOXBIN2PRG.PRG") loCnv = NEWOBJECT("c_foxbin2prg", "FOXBIN2PRG.PRG")
loCnv.EvaluarConfiguracion( '', '1', '1', '1', '1', '4', '1', '0' ) loCnv.EvaluarConfiguracion( '1', '1', '1', '0', '1', '4', '1', '0' )
*loCnv.l_Test = .T. *loCnv.l_Test = .T.
loCnv.run_AfterCreate_DB2 = 'run_AfterCreate_DB2__Ejecutado' loCnv.run_AfterCreate_DB2 = 'run_AfterCreate_DB2__Ejecutado'
THIS.run_AfterCreate_DB2__Ejecutado = .F. THIS.run_AfterCreate_DB2__Ejecutado = .F.
@@ -1669,7 +1669,7 @@ DEFINE CLASS ut__foxbin2prg AS FxuTestCase OF FxuTestCase.prg
goFXU = THIS goFXU = THIS
loEx = NULL loEx = NULL
loCnv = NEWOBJECT("c_foxbin2prg", "FOXBIN2PRG.PRG") loCnv = NEWOBJECT("c_foxbin2prg", "FOXBIN2PRG.PRG")
loCnv.EvaluarConfiguracion( '', '1', '1', '1', '1', '4', '1', '0' ) loCnv.EvaluarConfiguracion( '1', '1', '1', '0', '1', '4', '1', '0' )
*loCnv.l_Test = .T. *loCnv.l_Test = .T.
loCnv.DBF_Conversion_Support = 2 loCnv.DBF_Conversion_Support = 2
loCnv.run_AfterCreateTable = 'run_AfterCreateTable__Ejecutado' loCnv.run_AfterCreateTable = 'run_AfterCreateTable__Ejecutado'

View File

@@ -108,9 +108,11 @@ DEFINE CLASS ut__foxbin2prg__c_conversor_prg_a_bin__insert_AllObjects AS FxuTest
, laWriteOrder_Esperado(3) ; , laWriteOrder_Esperado(3) ;
, loEx AS EXCEPTION , loEx AS EXCEPTION
LOCAL loFoxBin2Prg AS C_FOXBIN2PRG OF "FOXBIN2PRG.PRG"
LOCAL loObj AS c_conversor_prg_a_bin OF "FOXBIN2PRG.PRG" LOCAL loObj AS c_conversor_prg_a_bin OF "FOXBIN2PRG.PRG"
LOCAL loObjeto AS CL_OBJETO OF "FOXBIN2PRG.PRG" LOCAL loObjeto AS CL_OBJETO OF "FOXBIN2PRG.PRG"
LOCAL loClase AS CL_CLASE OF "FOXBIN2PRG.PRG" LOCAL loClase AS CL_CLASE OF "FOXBIN2PRG.PRG"
loObj = THIS.icObj loObj = THIS.icObj
loClase = THIS.icClase loClase = THIS.icClase
loEx = NULL loEx = NULL
@@ -118,6 +120,9 @@ DEFINE CLASS ut__foxbin2prg__c_conversor_prg_a_bin__insert_AllObjects AS FxuTest
*-- DATOS DE ENTRADA *-- DATOS DE ENTRADA
STORE 0 TO lnCodError STORE 0 TO lnCodError
*-- *--
loFoxBin2Prg = NULL
loFoxBin2Prg = NEWOBJECT("C_FOXBIN2PRG", "FOXBIN2PRG.PRG", "")
*--
loObjeto = NULL loObjeto = NULL
loObjeto = NEWOBJECT("CL_OBJETO", "FOXBIN2PRG.PRG") loObjeto = NEWOBJECT("CL_OBJETO", "FOXBIN2PRG.PRG")
loObjeto._ObjName = 'Label3' loObjeto._ObjName = 'Label3'
@@ -151,10 +156,12 @@ DEFINE CLASS ut__foxbin2prg__c_conversor_prg_a_bin__insert_AllObjects AS FxuTest
laWriteOrder_Esperado(3) = 1 laWriteOrder_Esperado(3) = 1
*-- TEST *-- TEST
loObj.insert_AllObjects( @loClase ) loObj.insert_AllObjects( @loClase, @loFoxBin2Prg )
THIS.Evaluate_results( loEx, lnCodError_Esperado, @loClase, @laWriteOrder_Esperado ) THIS.Evaluate_results( loEx, lnCodError_Esperado, @loClase, @laWriteOrder_Esperado )
STORE NULL TO loFoxBin2Prg, loObj, loClase, loObject
ENDFUNC ENDFUNC

Binary file not shown.

View File

@@ -26,7 +26,7 @@ _LegalTrademark = "Creative Commons 4: Reconocimiento - CompartirIgual (by-sa):
_ProductName = "FOXBIN2PRG" _ProductName = "FOXBIN2PRG"
_MajorVer = "1" _MajorVer = "1"
_MinorVer = "19" _MinorVer = "19"
_Revision = "34" _Revision = "35"
_LanguageID = "1034" _LanguageID = "1034"
_AutoIncrement = "0" _AutoIncrement = "0"
*</DevInfo> *</DevInfo>

Binary file not shown.

Binary file not shown.

View File

@@ -105,6 +105,7 @@
* 27/08/2014 FDBOZZO v1.19.33 Arreglo bug mnx v1.19.32: Si se crea un men<65> con una opci<63>n de tipo #Bar vac<61>a, el men<65> se genera mal (Peter Hipp) * 27/08/2014 FDBOZZO v1.19.33 Arreglo bug mnx v1.19.32: Si se crea un men<65> con una opci<63>n de tipo #Bar vac<61>a, el men<65> se genera mal (Peter Hipp)
* 29/08/2014 FDBOZZO v1.19.33 Arreglo bug mnx v1.19.32: Si una opci<63>n tiene asociado un Procedure de 1 l<>nea, no se mantiene como Procedure y se convierte a Command (Peter Hipp) * 29/08/2014 FDBOZZO v1.19.33 Arreglo bug mnx v1.19.32: Si una opci<63>n tiene asociado un Procedure de 1 l<>nea, no se mantiene como Procedure y se convierte a Command (Peter Hipp)
* 19/09/2014 FDBOZZO v1.19.34 Arreglo bug: Si se ejecuta FoxBin2Prg desde ventana de comandos FoxPro para un proyecto y hay alg<6C>n archivo abierto o cacheado, se produce un error al intentar capitalizar el archivo de entrada (Jim Nelson) * 19/09/2014 FDBOZZO v1.19.34 Arreglo bug: Si se ejecuta FoxBin2Prg desde ventana de comandos FoxPro para un proyecto y hay alg<6C>n archivo abierto o cacheado, se produce un error al intentar capitalizar el archivo de entrada (Jim Nelson)
* 26/09/2014 FDBOZZO v1.19.35 Mejora: Generar siempre el mismo Timestamp y UniqueID para los binarios minimizar<61>a los cambios al regenerarlos (Marcio Gomez G.)
* </HISTORIAL DE CAMBIOS Y NOTAS IMPORTANTES> * </HISTORIAL DE CAMBIOS Y NOTAS IMPORTANTES>
* *
*--------------------------------------------------------------------------------------------------- *---------------------------------------------------------------------------------------------------
@@ -150,6 +151,7 @@
* 27/08/2014 Peter Hipp REPORTE BUG mnx v1.19.32: Si se crea un men<65> con una opci<63>n de tipo #Bar vac<61>a, el men<65> se genera mal (solucionado en v1.19.33) * 27/08/2014 Peter Hipp REPORTE BUG mnx v1.19.32: Si se crea un men<65> con una opci<63>n de tipo #Bar vac<61>a, el men<65> se genera mal (solucionado en v1.19.33)
* 28/08/2014 Peter Hipp REPORTE BUG mnx v1.19.32: Si una opci<63>n tiene asociado un Procedure de 1 l<>nea, no se mantiene como Procedure y se convierte a Command (solucionado en v1.19.33) * 28/08/2014 Peter Hipp REPORTE BUG mnx v1.19.32: Si una opci<63>n tiene asociado un Procedure de 1 l<>nea, no se mantiene como Procedure y se convierte a Command (solucionado en v1.19.33)
* 19/09/2014 Jim Nelson REPORTE BUG v1.19.33: Si se ejecuta FoxBin2Prg desde ventana de comandos FoxPro para un proyecto y hay alg<6C>n archivo abierto o cacheado, se produce un error (solucionado en v1.19.34) * 19/09/2014 Jim Nelson REPORTE BUG v1.19.33: Si se ejecuta FoxBin2Prg desde ventana de comandos FoxPro para un proyecto y hay alg<6C>n archivo abierto o cacheado, se produce un error (solucionado en v1.19.34)
* 26/09/2014 Marcio Gomez G. MEJORA v1.19.34: Generar siempre el mismo Timestamp y UniqueID para los binarios minimizar<61>a los cambios al regenerarlos (Agregado en v1.19.35)
* </TESTEO Y REPORTE DE BUGS (AGRADECIMIENTOS)> * </TESTEO Y REPORTE DE BUGS (AGRADECIMIENTOS)>
* *
*--------------------------------------------------------------------------------------------------- *---------------------------------------------------------------------------------------------------
@@ -571,7 +573,7 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM
c_Type = '' c_Type = ''
t_InputFile_TimeStamp = {//::} t_InputFile_TimeStamp = {//::}
t_OutputFile_TimeStamp = {//::} t_OutputFile_TimeStamp = {//::}
lFileMode = .T. lFileMode = .F.
n_ExisteCapitalizacion = -1 n_ExisteCapitalizacion = -1
l_CFG_CachedAccess = .F. l_CFG_CachedAccess = .F.
l_ConfigEvaluated = .F. l_ConfigEvaluated = .F.
@@ -592,8 +594,9 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM
l_ReportSort_Enabled = .T. && Para Unit Testing se puede cambiar a .F. para buscar diferencias l_ReportSort_Enabled = .T. && Para Unit Testing se puede cambiar a .F. para buscar diferencias
l_Main_CFG_Loaded = .F. l_Main_CFG_Loaded = .F.
n_ExtraBackupLevels = 1 n_ExtraBackupLevels = 1
n_ClassTimeStamp = 0 n_ClassTimeStamp = 1130668032 && 2013/11/04 20:00:00
n_CFG_Actual = 0 n_CFG_Actual = 0
n_ID = 0
o_Conversor = NULL o_Conversor = NULL
o_Frm_Avance = NULL o_Frm_Avance = NULL
o_FSO = NULL o_FSO = NULL
@@ -2392,6 +2395,20 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM
ENDPROC ENDPROC
PROCEDURE Unique_ID
LPARAMETERS tcValType
tcValType = EVL(tcValType,'C')
THIS.n_ID = INT( THIS.n_ID + 1 )
IF tcValType = 'N'
RETURN THIS.n_ID
ELSE
RETURN '_' + TRANSFORM( THIS.n_ID, '@L #########' )
ENDIF
ENDPROC
ENDDEFINE ENDDEFINE
@@ -4725,10 +4742,10 @@ DEFINE CLASS c_conversor_prg_a_bin AS c_conversor_base
lcMethodsMemo = .objectMethods2Memo( toObjeto, toClase ) lcMethodsMemo = .objectMethods2Memo( toObjeto, toClase )
IF EMPTY(toObjeto._TimeStamp) IF EMPTY(toObjeto._TimeStamp)
toObjeto._TimeStamp = THIS.RowTimeStamp(DATETIME()) toObjeto._TimeStamp = THIS.RowTimeStamp( {^2013/11/04 20:00:00} )
ENDIF ENDIF
IF EMPTY(toObjeto._UniqueID) IF EMPTY(toObjeto._UniqueID)
toObjeto._UniqueID = SYS(2015) toObjeto._UniqueID = toFoxBin2Prg.Unique_ID()
ENDIF ENDIF
*-- Inserto el objeto *-- Inserto el objeto
@@ -4810,10 +4827,10 @@ DEFINE CLASS c_conversor_prg_a_bin AS c_conversor_base
loObjeto = toClase._AddObjects( X ) loObjeto = toClase._AddObjects( X )
IF EMPTY(loObjeto._TimeStamp) IF EMPTY(loObjeto._TimeStamp)
loObjeto._TimeStamp = THIS.RowTimeStamp(DATETIME()) loObjeto._TimeStamp = THIS.RowTimeStamp( {^2013/11/04 20:00:00} )
ENDIF ENDIF
IF EMPTY(loObjeto._UniqueID) IF EMPTY(loObjeto._UniqueID)
loObjeto._UniqueID = SYS(2015) loObjeto._UniqueID = toFoxBin2Prg.Unique_ID()
ENDIF ENDIF
laObjNames( X, 1 ) = loObjeto._Nombre laObjNames( X, 1 ) = loObjeto._Nombre
@@ -5863,7 +5880,7 @@ DEFINE CLASS c_conversor_prg_a_vcx AS c_conversor_prg_a_bin
*-- Identifico el inicio/fin de bloque, definici<63>n, cabecera y cuerpo de cada clase *-- Identifico el inicio/fin de bloque, definici<63>n, cabecera y cuerpo de cada clase
.identificarBloquesDeCodigo( @laCodeLines, lnCodeLines, @laLineasExclusion, lnBloquesExclusion, @toModulo ) .identificarBloquesDeCodigo( @laCodeLines, lnCodeLines, @laLineasExclusion, lnBloquesExclusion, @toModulo )
.escribirArchivoBin( @toModulo, toFoxBin2Prg ) .escribirArchivoBin( @toModulo, @toFoxBin2Prg )
ENDWITH && THIS ENDWITH && THIS
@@ -5982,10 +5999,10 @@ DEFINE CLASS c_conversor_prg_a_vcx AS c_conversor_prg_a_bin
ENDIF ENDIF
IF EMPTY(loClase._TimeStamp) IF EMPTY(loClase._TimeStamp)
loClase._TimeStamp = THIS.RowTimeStamp(DATETIME()) loClase._TimeStamp = THIS.RowTimeStamp( {^2013/11/04 20:00:00} )
ENDIF ENDIF
IF EMPTY(loClase._UniqueID) IF EMPTY(loClase._UniqueID)
loClase._UniqueID = SYS(2015) loClase._UniqueID = toFoxBin2Prg.Unique_ID()
ENDIF ENDIF
*-- Inserto la clase *-- Inserto la clase
@@ -6037,7 +6054,7 @@ DEFINE CLASS c_conversor_prg_a_vcx AS c_conversor_prg_a_bin
, loClase._User ) , loClase._User )
.insert_AllObjects( @loClase, toFoxBin2Prg ) .insert_AllObjects( @loClase, @toFoxBin2Prg )
*-- Inserto el COMMENT *-- Inserto el COMMENT
@@ -6166,7 +6183,7 @@ DEFINE CLASS c_conversor_prg_a_scx AS c_conversor_prg_a_bin
*-- Identifico el inicio/fin de bloque, definici<63>n, cabecera y cuerpo de cada clase *-- Identifico el inicio/fin de bloque, definici<63>n, cabecera y cuerpo de cada clase
.identificarBloquesDeCodigo( @laCodeLines, lnCodeLines, @laLineasExclusion, lnBloquesExclusion, @toModulo ) .identificarBloquesDeCodigo( @laCodeLines, lnCodeLines, @laLineasExclusion, lnBloquesExclusion, @toModulo )
.escribirArchivoBin( @toModulo, toFoxBin2Prg ) .escribirArchivoBin( @toModulo, @toFoxBin2Prg )
ENDWITH && THIS ENDWITH && THIS
@@ -6285,10 +6302,10 @@ DEFINE CLASS c_conversor_prg_a_scx AS c_conversor_prg_a_bin
ENDIF ENDIF
IF EMPTY(loClase._TimeStamp) IF EMPTY(loClase._TimeStamp)
loClase._TimeStamp = THIS.RowTimeStamp(DATETIME()) loClase._TimeStamp = THIS.RowTimeStamp( {^2013/11/04 20:00:00} )
ENDIF ENDIF
IF EMPTY(loClase._UniqueID) IF EMPTY(loClase._UniqueID)
loClase._UniqueID = SYS(2015) loClase._UniqueID = toFoxBin2Prg.Unique_ID()
ENDIF ENDIF
*-- Inserto la clase *-- Inserto la clase
@@ -6340,7 +6357,7 @@ DEFINE CLASS c_conversor_prg_a_scx AS c_conversor_prg_a_bin
, loClase._User ) , loClase._User )
.insert_AllObjects( @loClase, toFoxBin2Prg ) .insert_AllObjects( @loClase, @toFoxBin2Prg )
ENDFOR && I = 1 TO toModulo._Clases_Count ENDFOR && I = 1 TO toModulo._Clases_Count
ENDFOR && X = 1 TO 2 ENDFOR && X = 1 TO 2
@@ -6524,10 +6541,10 @@ DEFINE CLASS c_conversor_prg_a_pjx AS c_conversor_prg_a_bin
ENDIF ENDIF
IF EMPTY(toProject._TimeStamp) IF EMPTY(toProject._TimeStamp)
toProject._TimeStamp = THIS.RowTimeStamp(DATETIME()) toProject._TimeStamp = THIS.RowTimeStamp( {^2013/11/04 20:00:00} )
ENDIF ENDIF
IF EMPTY(toProject._ID) IF EMPTY(toProject._ID)
toProject._ID = INT(VAL(SYS(3))) toProject._ID = toFoxBin2Prg.Unique_ID('N')
ENDIF ENDIF
*-- Si hay ProjectHook de proyecto, lo inserto *-- Si hay ProjectHook de proyecto, lo inserto
@@ -6564,10 +6581,10 @@ DEFINE CLASS c_conversor_prg_a_pjx AS c_conversor_prg_a_bin
FOR EACH loFile IN toProject FOXOBJECT FOR EACH loFile IN toProject FOXOBJECT
IF EMPTY(loFile._TimeStamp) IF EMPTY(loFile._TimeStamp)
loFile._TimeStamp = THIS.RowTimeStamp(DATETIME()) loFile._TimeStamp = THIS.RowTimeStamp( {^2013/11/04 20:00:00} )
ENDIF ENDIF
IF EMPTY(loFile._ID) IF EMPTY(loFile._ID)
loFile._ID = INT(VAL(SYS(3))) loFile._ID = toFoxBin2Prg.Unique_ID('N')
ENDIF ENDIF
INSERT INTO TABLABIN ; INSERT INTO TABLABIN ;
@@ -7306,10 +7323,10 @@ DEFINE CLASS c_conversor_prg_a_frx AS c_conversor_prg_a_bin
* loReg.UNIQUEID = '' * loReg.UNIQUEID = ''
*ENDIF *ENDIF
IF EMPTY(loReg.TIMESTAMP) IF EMPTY(loReg.TIMESTAMP)
loReg.TIMESTAMP = THIS.RowTimeStamp(DATETIME()) loReg.TIMESTAMP = THIS.RowTimeStamp( {^2013/11/04 20:00:00} )
ENDIF ENDIF
IF EMPTY(loReg.UNIQUEID) OR ALLTRIM(loReg.UNIQUEID) = '0' IF EMPTY(loReg.UNIQUEID) OR ALLTRIM(loReg.UNIQUEID) = '0'
loReg.UNIQUEID = SYS(2015) loReg.UNIQUEID = toFoxBin2Prg.Unique_ID()
ENDIF ENDIF
*-- Ajuste de los tipos de dato *-- Ajuste de los tipos de dato
@@ -19309,7 +19326,7 @@ DEFINE CLASS CL_MENU_OPTION AS CL_MENU_COL_BASE
, loBarPop AS CL_MENU_BARPOP OF 'FOXBIN2PRG.PRG' , loBarPop AS CL_MENU_BARPOP OF 'FOXBIN2PRG.PRG'
STORE NULL TO loBarPop STORE NULL TO loBarPop
lcTab = REPLICATE(CHR(9),tnNivel) lcTab = REPLICATE(CHR(9),tnNivel)
toReg.NAME = EVL(toReg.NAME,SYS(2015)) toReg.NAME = EVL(toReg.NAME, '_' + TRANSFORM(toReg.NUMITEMS, '@L #########') )
lcText = '' lcText = ''
*-- DEFINE PAD *-- DEFINE PAD