- BugFix vcx/scx: FoxBin2Prg should ignore the records that VFP Designer ignores (Doug Hennig / https://github.com/fdbozzo/foxbin2prg/issues/15)
- BugFix vcx/scx: FoxBin2Prg encodes MemberData property with CR/LF, which can cause "property '_memberdata' value is too long" error (Doug Hennig / https://github.com/fdbozzo/foxbin2prg/issues/16)
This commit is contained in:
@@ -2,8 +2,8 @@ Lparameters toUpdateInfo
|
|||||||
|
|
||||||
Local lcNote
|
Local lcNote
|
||||||
With toUpdateInfo
|
With toUpdateInfo
|
||||||
.VersionNumber = 'v1.19.49.4'
|
.VersionNumber = 'v1.19.49.6'
|
||||||
.VersionDate = Date(2017,12,04)
|
.VersionDate = Date(2018,01,06)
|
||||||
.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'
|
||||||
@@ -21,6 +21,10 @@ Demo video using FoxBin2Prg with PlasticSCM: http://youtu.be/sE4wQ50Itqg
|
|||||||
|
|
||||||
Change History -------------------------------------------------------------
|
Change History -------------------------------------------------------------
|
||||||
|
|
||||||
|
2018/01/04 v1.19.49.6
|
||||||
|
- BugFix vcx/scx: FoxBin2Prg should ignore the records that VFP Designer ignores (Doug Hennig / https://github.com/fdbozzo/foxbin2prg/issues/15)
|
||||||
|
- BugFix vcx/scx: FoxBin2Prg encodes MemberData property with CR/LF, which can cause "property '_memberdata' value is too long" error (Doug Hennig / https://github.com/fdbozzo/foxbin2prg/issues/16)
|
||||||
|
|
||||||
2017/12/20 v1.19.49.5
|
2017/12/20 v1.19.49.5
|
||||||
- BugFix DBF: When FoxBin2PRG converts a DB2 file to a DBF file and imports the data (using DBF_Conversion_Support = 8), tabs at the start of lines in memo fields are lost (Doug Hennig / https://github.com/fdbozzo/foxbin2prg/issues/13)
|
- BugFix DBF: When FoxBin2PRG converts a DB2 file to a DBF file and imports the data (using DBF_Conversion_Support = 8), tabs at the start of lines in memo fields are lost (Doug Hennig / https://github.com/fdbozzo/foxbin2prg/issues/13)
|
||||||
|
|
||||||
|
|||||||
@@ -1544,7 +1544,7 @@ DEFINE CLASS f_base AS form
|
|||||||
tcFilename = SYS(5) + ADDBS(CURDIR()) + "TESTS\DATOS_TEST\" + tcFilename + '.bmp'
|
tcFilename = SYS(5) + ADDBS(CURDIR()) + "TESTS\DATOS_TEST\" + tcFilename + '.bmp'
|
||||||
ENDIF
|
ENDIF
|
||||||
|
|
||||||
Declare Integer formtobmp IN "TESTS\PCT_DLL.dll" integer hwnd,String bmpFileName
|
Declare Integer formtobmp IN "PCT_DLL.dll" integer hwnd,String bmpFileName
|
||||||
retVal = formtobmp( THISFORM.HWnd, tcFilename )
|
retVal = formtobmp( THISFORM.HWnd, tcFilename )
|
||||||
|
|
||||||
*Declare Integer formtobmpA IN "TESTS\PCT_DLL.dll" string bmpfilename,integer nX,integer nY,integer nX2,integer nY2
|
*Declare Integer formtobmpA IN "TESTS\PCT_DLL.dll" string bmpfilename,integer nX,integer nY,integer nX2,integer nY2
|
||||||
@@ -1561,6 +1561,7 @@ DEFINE CLASS f_base AS form
|
|||||||
ENDPROC
|
ENDPROC
|
||||||
|
|
||||||
PROCEDURE Init
|
PROCEDURE Init
|
||||||
|
SET PATH TO (FULLPATH("..\", THIS.ClassLibrary)) ADDITIVE
|
||||||
THISFORM.cmdCapturar.SetFocus()
|
THISFORM.cmdCapturar.SetFocus()
|
||||||
|
|
||||||
ENDPROC
|
ENDPROC
|
||||||
|
|||||||
Binary file not shown.
Binary file not shown.
@@ -290,7 +290,9 @@ DEFINE CLASS ut__foxbin2prg__c_conversor_prg_a_bin__analyzeAssignmentOf_TAG AS F
|
|||||||
|
|
||||||
*-- DATOS ESPERADOS
|
*-- DATOS ESPERADOS
|
||||||
STORE 0 TO lnCodError_Esperado
|
STORE 0 TO lnCodError_Esperado
|
||||||
lcValue_Esperado = REPLICATE( CHR(1), 517 ) + STR(23 + LEN(lcMemberdata),8) + '<VFPData>' + CR_LF + lcMemberdata + CR_LF + '</VFPData>'
|
*lcValue_Esperado = REPLICATE( CHR(1), 517 ) + STR(23 + LEN(lcMemberdata),8) + '<VFPData>' + CR_LF + lcMemberdata + CR_LF + '</VFPData>'
|
||||||
|
lcMemberdata = CHRTRAN(lcMemberdata,CR_LF,'') && Issue#15 - Doug Hennig
|
||||||
|
lcValue_Esperado = REPLICATE( CHR(1), 517 ) + STR(19 + LEN(lcMemberdata),8) + '<VFPData>' + lcMemberdata + '</VFPData>'
|
||||||
|
|
||||||
*-- TEST
|
*-- TEST
|
||||||
loObj.analyzeAssignmentOf_TAG( @lcPropName, @lcPropValue, @laProps, @lnProp_Count ;
|
loObj.analyzeAssignmentOf_TAG( @lcPropName, @lcPropValue, @laProps, @lnProp_Count ;
|
||||||
|
|||||||
BIN
foxbin2prg.exe
BIN
foxbin2prg.exe
Binary file not shown.
@@ -204,6 +204,8 @@
|
|||||||
* 03/12/2017 JS&FDBOZZO v1.19.49.3 Bug Fix db2: Los campos "Double" asumen 2 decimales cuando se definen con 0 decimales (Jerry Stager)
|
* 03/12/2017 JS&FDBOZZO v1.19.49.3 Bug Fix db2: Los campos "Double" asumen 2 decimales cuando se definen con 0 decimales (Jerry Stager)
|
||||||
* 04/12/2017 FDBOZZO v1.19.49.4 Cuando se usa ClassPerFile an Modo API y se importan clases simples, a veces sus nombres se toman sin comillas, provocando errores (Lutz Scheffler)
|
* 04/12/2017 FDBOZZO v1.19.49.4 Cuando se usa ClassPerFile an Modo API y se importan clases simples, a veces sus nombres se toman sin comillas, provocando errores (Lutz Scheffler)
|
||||||
* 20/12/2017 DH&FDBOZZO v1.19.49.5 Bug Fix dbf: Cuando se importan datos de un DB2 a DBF (con DBF_Conversion_Support = 8), los tabs al inicio de los memo se pierden (Doug Hennig)
|
* 20/12/2017 DH&FDBOZZO v1.19.49.5 Bug Fix dbf: Cuando se importan datos de un DB2 a DBF (con DBF_Conversion_Support = 8), los tabs al inicio de los memo se pierden (Doug Hennig)
|
||||||
|
* 04/01/2018 FDBOZZO v1.19.49.6 Bug Fix vcx/scx: FoxBin2Prg debería ignorar los registros que el diseñador de FoxPro ignora (Doug Hennig)
|
||||||
|
* 04/01/2018 FDBOZZO v1.19.49.6 Bug Fix vcx/scx: Cuando se regenera la propiedad _MemberData se agregan CR/LF por cada miembro, pudiendo provocar un error de "valor muy largo" (Doug Hennnig)
|
||||||
* </HISTORIAL DE CAMBIOS Y NOTAS IMPORTANTES>
|
* </HISTORIAL DE CAMBIOS Y NOTAS IMPORTANTES>
|
||||||
*
|
*
|
||||||
*---------------------------------------------------------------------------------------------------
|
*---------------------------------------------------------------------------------------------------
|
||||||
@@ -321,6 +323,8 @@
|
|||||||
* 31/08/2017 Jerry Stager Reporte bug db2 v1.19.48: Los campos "Double" asumen 2 decimales cuando se definen con 0 decimales (Agregado en v1.19.49.3)
|
* 31/08/2017 Jerry Stager Reporte bug db2 v1.19.48: Los campos "Double" asumen 2 decimales cuando se definen con 0 decimales (Agregado en v1.19.49.3)
|
||||||
* 03/12/2017 Lutz Scheffler Reporte Bug vx2 v1.19.49: Cuando se usa ClassPerFile an Modo API y se importan clases simples, a veces sus nombres se toman sin comillas, provocando errores (Arreglado en v1.19.49.4)
|
* 03/12/2017 Lutz Scheffler Reporte Bug vx2 v1.19.49: Cuando se usa ClassPerFile an Modo API y se importan clases simples, a veces sus nombres se toman sin comillas, provocando errores (Arreglado en v1.19.49.4)
|
||||||
* 18/12/2017 Doug Hennnig Reporte Bug dbf v1.19.49: Cuando se importan datos de un DB2 a DBF (con DBF_Conversion_Support = 8), los tabs al inicio de los memo se pierden (Arreglado en v1.19.49.5)
|
* 18/12/2017 Doug Hennnig Reporte Bug dbf v1.19.49: Cuando se importan datos de un DB2 a DBF (con DBF_Conversion_Support = 8), los tabs al inicio de los memo se pierden (Arreglado en v1.19.49.5)
|
||||||
|
* 04/01/2018 Doug Hennnig Reporte Bug vcx/scx v1.19.49: FoxBin2Prg debería ignorar los registros que el diseñador de FoxPro ignora (Arreglado en v1.19.49.6)
|
||||||
|
* 04/01/2018 Doug Hennnig Reporte Bug vcx/scx v1.19.49: Cuando se regenera la propiedad _MemberData se agregan CR/LF por cada miembro, pudiendo provocar un error de "valor muy largo" (Arreglado en v1.19.49.6)
|
||||||
* </TESTEO Y REPORTE DE BUGS (AGRADECIMIENTOS)>
|
* </TESTEO Y REPORTE DE BUGS (AGRADECIMIENTOS)>
|
||||||
*
|
*
|
||||||
*---------------------------------------------------------------------------------------------------
|
*---------------------------------------------------------------------------------------------------
|
||||||
@@ -6349,12 +6353,6 @@ DEFINE CLASS c_conversor_base AS Custom
|
|||||||
LOCAL lnCodError, lnPos, lcValue
|
LOCAL lnCodError, lnPos, lcValue
|
||||||
tcComentario = ''
|
tcComentario = ''
|
||||||
|
|
||||||
*-- Limpieza de caracteres sin uso
|
|
||||||
*IF INLIST(tcValue, '..\', '..\..\' ) THEN
|
|
||||||
* MESSAGEBOX( 'Encontrado valor "' + tcValue + '" en propiedad "' + tcProp, 4096, PROGRAM() )
|
|
||||||
* tcValue = ''
|
|
||||||
*ENDIF
|
|
||||||
|
|
||||||
*-- Ajustes de algunos casos especiales
|
*-- Ajustes de algunos casos especiales
|
||||||
DO CASE
|
DO CASE
|
||||||
CASE tcProp == '_memberdata'
|
CASE tcProp == '_memberdata'
|
||||||
@@ -6362,16 +6360,13 @@ DEFINE CLASS c_conversor_base AS Custom
|
|||||||
lcValue = ''
|
lcValue = ''
|
||||||
|
|
||||||
FOR I = 1 TO OCCURS( '/>', tcValue )
|
FOR I = 1 TO OCCURS( '/>', tcValue )
|
||||||
*TEXT TO lcValue TEXTMERGE ADDITIVE NOSHOW FLAGS 1+2 PRETEXT 1+2
|
* issue#16: memberdata property should be saved in compressed format
|
||||||
* <<CHRTRAN( STREXTRACT( tcValue, '<memberdata ', '/>', I, 1+4 ), CR_LF, ' ' )>>
|
lcValue = lcValue + CHRTRAN( STREXTRACT( tcValue, '<memberdata ', '/>', I, 1+4 ), CR_LF, ' ' )
|
||||||
*ENDTEXT
|
|
||||||
lcValue = lcValue + CHR(13) + CHR(10) + CHRTRAN( STREXTRACT( tcValue, '<memberdata ', '/>', I, 1+4 ), CR_LF, ' ' )
|
|
||||||
ENDFOR
|
ENDFOR
|
||||||
|
|
||||||
|
* issue#16: memberdata property should be saved in compressed format
|
||||||
TEXT TO tcValue TEXTMERGE NOSHOW FLAGS 1 PRETEXT 1+2
|
TEXT TO tcValue TEXTMERGE NOSHOW FLAGS 1 PRETEXT 1+2
|
||||||
<VFPData>
|
<VFPData><<SUBSTR( lcValue, 1)>></VFPData>
|
||||||
<<SUBSTR( lcValue, 3)>>
|
|
||||||
</VFPData>
|
|
||||||
ENDTEXT
|
ENDTEXT
|
||||||
|
|
||||||
IF LEN(lcValue) > 255
|
IF LEN(lcValue) > 255
|
||||||
@@ -13510,6 +13505,7 @@ DEFINE CLASS c_conversor_bin_a_prg AS c_conversor_base
|
|||||||
+ [<memberdata name="get_propsfrom_protected" display="get_PropsFrom_PROTECTED"/>] ;
|
+ [<memberdata name="get_propsfrom_protected" display="get_PropsFrom_PROTECTED"/>] ;
|
||||||
+ [<memberdata name="get_propsandcommentsfrom_reserved3" display="get_PropsAndCommentsFrom_RESERVED3"/>] ;
|
+ [<memberdata name="get_propsandcommentsfrom_reserved3" display="get_PropsAndCommentsFrom_RESERVED3"/>] ;
|
||||||
+ [<memberdata name="get_propsandvaluesfrom_properties" display="get_PropsAndValuesFrom_PROPERTIES"/>] ;
|
+ [<memberdata name="get_propsandvaluesfrom_properties" display="get_PropsAndValuesFrom_PROPERTIES"/>] ;
|
||||||
|
+ [<memberdata name="ignoreincorrectdefinedobjects" display="ignoreIncorrectDefinedObjects"/>] ;
|
||||||
+ [<memberdata name="indentmemo" display="indentMemo"/>] ;
|
+ [<memberdata name="indentmemo" display="indentMemo"/>] ;
|
||||||
+ [<memberdata name="memoinoneline" display="memoInOneLine"/>] ;
|
+ [<memberdata name="memoinoneline" display="memoInOneLine"/>] ;
|
||||||
+ [<memberdata name="method2array" display="method2Array"/>] ;
|
+ [<memberdata name="method2array" display="method2Array"/>] ;
|
||||||
@@ -14025,6 +14021,44 @@ DEFINE CLASS c_conversor_bin_a_prg AS c_conversor_base
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
PROCEDURE ignoreIncorrectDefinedObjects(lcCursor)
|
||||||
|
* Issue#15 - VFP Designer ignored objects should be ignored by FoxBin2Prg
|
||||||
|
LOCAL lcObjName, lcParent, lcParentObjName, loObjs as Collection
|
||||||
|
loObjs = CREATEOBJECT("Collection")
|
||||||
|
SELECT (lcCursor)
|
||||||
|
|
||||||
|
SCAN FOR PLATFORM = "WINDOWS"
|
||||||
|
lcObjName = LOWER(OBJNAME)
|
||||||
|
lcParent = LOWER(PARENT)
|
||||||
|
|
||||||
|
IF EMPTY(lcParent)
|
||||||
|
lcParentObjName = lcObjName
|
||||||
|
ELSE
|
||||||
|
lcParentObjName = lcParent + '.' + lcObjName
|
||||||
|
ENDIF
|
||||||
|
|
||||||
|
IF NOT EMPTY(lcParent)
|
||||||
|
* Tiene Parent, y debe existir, si no es ignorado
|
||||||
|
* NOTA: Del parent solo se puede comprobar el objeto primario.
|
||||||
|
IF loObjs.GetKey(GETWORDNUM(lcParent + '.', 1, '.')) > 0
|
||||||
|
* Existe: se agrega al array el nuevo objeto
|
||||||
|
loObjs.Add( '', lcParentObjName )
|
||||||
|
ELSE
|
||||||
|
* No existe: se ignora
|
||||||
|
DELETE
|
||||||
|
ENDIF
|
||||||
|
ELSE
|
||||||
|
* No Existe: se agrega al array
|
||||||
|
loObjs.Add( '', lcParentObjName )
|
||||||
|
|
||||||
|
ENDIF
|
||||||
|
ENDSCAN
|
||||||
|
|
||||||
|
RETURN
|
||||||
|
ENDPROC
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
PROCEDURE indentMemo
|
PROCEDURE indentMemo
|
||||||
LPARAMETERS tcMethod, tcIndentation, tlKeepProcHeader
|
LPARAMETERS tcMethod, tcIndentation, tlKeepProcHeader
|
||||||
*-- INDENTA EL CÓDIGO DE UN MÉTODO DADO Y QUITA LA CABECERA DE MÉTODO (PROCEDURE/ENDPROC) SI LA ENCUENTRA
|
*-- INDENTA EL CÓDIGO DE UN MÉTODO DADO Y QUITA LA CABECERA DE MÉTODO (PROCEDURE/ENDPROC) SI LA ENCUENTRA
|
||||||
@@ -15398,7 +15432,7 @@ DEFINE CLASS c_conversor_vcx_a_prg AS c_conversor_bin_a_prg
|
|||||||
|
|
||||||
IF toFoxBin2Prg.n_UseClassPerFile = 0 OR EMPTY(toFoxBin2Prg.c_ClassToConvert) THEN
|
IF toFoxBin2Prg.n_UseClassPerFile = 0 OR EMPTY(toFoxBin2Prg.c_ClassToConvert) THEN
|
||||||
*-- Exportar la librería entera a texto
|
*-- Exportar la librería entera a texto
|
||||||
SELECT _TABLAORIG.*,RECNO() regnum FROM _TABLAORIG INTO CURSOR TABLABIN
|
SELECT _TABLAORIG.*,RECNO() regnum FROM _TABLAORIG INTO CURSOR TABLABIN READWRITE
|
||||||
ELSE
|
ELSE
|
||||||
*-- Exportar solo una clase a texto cuando se usa ClassPerFile y se indicó una clase
|
*-- Exportar solo una clase a texto cuando se usa ClassPerFile y se indicó una clase
|
||||||
SELECT _TABLAORIG.*,RECNO() regnum FROM _TABLAORIG INTO CURSOR TABLABIN ;
|
SELECT _TABLAORIG.*,RECNO() regnum FROM _TABLAORIG INTO CURSOR TABLABIN ;
|
||||||
@@ -15411,6 +15445,9 @@ DEFINE CLASS c_conversor_vcx_a_prg AS c_conversor_bin_a_prg
|
|||||||
lnStepCount = 7
|
lnStepCount = 7
|
||||||
USE IN (SELECT("_TABLAORIG"))
|
USE IN (SELECT("_TABLAORIG"))
|
||||||
|
|
||||||
|
* Issue#15: Ignorar objetos mal definidos
|
||||||
|
.ignoreIncorrectDefinedObjects('TABLABIN')
|
||||||
|
|
||||||
INDEX ON PADR(LOWER(PLATFORM + IIF(EMPTY(PARENT),'',ALLTRIM(PARENT)+'.')+OBJNAME),240) TAG PARENT_OBJ ADDITIVE
|
INDEX ON PADR(LOWER(PLATFORM + IIF(EMPTY(PARENT),'',ALLTRIM(PARENT)+'.')+OBJNAME),240) TAG PARENT_OBJ ADDITIVE
|
||||||
SET ORDER TO 0 IN TABLABIN
|
SET ORDER TO 0 IN TABLABIN
|
||||||
|
|
||||||
@@ -15763,9 +15800,12 @@ DEFINE CLASS c_conversor_scx_a_prg AS c_conversor_bin_a_prg
|
|||||||
|
|
||||||
WITH THIS AS c_conversor_scx_a_prg OF 'FOXBIN2PRG.PRG'
|
WITH THIS AS c_conversor_scx_a_prg OF 'FOXBIN2PRG.PRG'
|
||||||
USE (.c_InputFile) SHARED AGAIN NOUPDATE ALIAS _TABLAORIG
|
USE (.c_InputFile) SHARED AGAIN NOUPDATE ALIAS _TABLAORIG
|
||||||
SELECT _TABLAORIG.*,RECNO() regnum FROM _TABLAORIG INTO CURSOR TABLABIN
|
SELECT _TABLAORIG.*,RECNO() regnum FROM _TABLAORIG INTO CURSOR TABLABIN READWRITE
|
||||||
USE IN (SELECT("_TABLAORIG"))
|
USE IN (SELECT("_TABLAORIG"))
|
||||||
|
|
||||||
|
* Issue#15: Ignorar objetos mal definidos
|
||||||
|
.ignoreIncorrectDefinedObjects('TABLABIN')
|
||||||
|
|
||||||
INDEX ON PADR(LOWER(PLATFORM + IIF(EMPTY(PARENT),'',ALLTRIM(PARENT)+'.')+OBJNAME),240) TAG PARENT_OBJ ADDITIVE
|
INDEX ON PADR(LOWER(PLATFORM + IIF(EMPTY(PARENT),'',ALLTRIM(PARENT)+'.')+OBJNAME),240) TAG PARENT_OBJ ADDITIVE
|
||||||
SET ORDER TO 0 IN TABLABIN
|
SET ORDER TO 0 IN TABLABIN
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user