diff --git a/FoxBin2PRGVersionFile.txt b/FoxBin2PRGVersionFile.txt index 0334897..5c9e1a5 100644 --- a/FoxBin2PRGVersionFile.txt +++ b/FoxBin2PRGVersionFile.txt @@ -2,8 +2,8 @@ Lparameters toUpdateInfo Local lcNote With toUpdateInfo - .VersionNumber = 'v1.19.49.7' - .VersionDate = Date(2018,01,11) + .VersionNumber = 'v1.19.49.8' + .VersionDate = Date(2018,02,03) .SourceFileUrl = 'http://vfpxrepository.com/dl/thorupdate/Projects/FoxBin2Prg/FoxBin2Prg.Zip' .Link = 'http://vfpx.codeplex.com/wikipage?title=FoxBin2PRG' @@ -21,6 +21,9 @@ Demo video using FoxBin2Prg with PlasticSCM: http://youtu.be/sE4wQ50Itqg Change History ------------------------------------------------------------- +2018-02-03 v1.19.49.8 +- Bug Fix: When converting a VCX corrupted with duplicated objects to text, "The specified key already exists" error is thrown (Kirides) + 2018-01-11 v1.19.49.7 - Bug Fix: When converting a DBF an error is thrown if there is a field called X or I (Francisco Prieto) diff --git a/ThorUpdater/FoxBin2Prg.zip b/ThorUpdater/FoxBin2Prg.zip index 56049c7..11206cb 100644 Binary files a/ThorUpdater/FoxBin2Prg.zip and b/ThorUpdater/FoxBin2Prg.zip differ diff --git a/ThorUpdater/FoxBin2PrgVersion.txt b/ThorUpdater/FoxBin2PrgVersion.txt index 5053e52..844adfa 100644 --- a/ThorUpdater/FoxBin2PrgVersion.txt +++ b/ThorUpdater/FoxBin2PrgVersion.txt @@ -2,10 +2,10 @@ lparameters toUpdateObject local ldDate, ; lnJulian, ; lcJulian -ldDate = date(2018,1,11) +ldDate = date(2018,2,3) lnJulian = val(sys(11, ldDate)) - val(sys(11, {^2000-01-01})) lcJulian = padl(transform(lnJulian), 4, '0') -toUpdateObject.AvailableVersion = 'FoxBin2Prg-1.19.49.7' + lcJulian + ; +toUpdateObject.AvailableVersion = 'FoxBin2Prg-1.19.49.8' + lcJulian + ; '-update-' + dtoc(ldDate, 1) return toUpdateObject diff --git a/ThorUpdater/Project.txt b/ThorUpdater/Project.txt index 4f580d0..b41d9e2 100644 --- a/ThorUpdater/Project.txt +++ b/ThorUpdater/Project.txt @@ -1,5 +1,5 @@ appName = FoxBin2Prg appID = FoxBin2Prg -majorVersion = 1.19.49.7 +majorVersion = 1.19.49.8 excludeFiles = *.bak,*.bat,*.fxp,*.tbk,*.tmp,*.dat,*.log,*.cvp,README.md,.gitignore,*.zip*,*.7z*,*- copia.*,*.private.*,test_*.*,xx*.*,*.lnk,vfp_init.*,tmp*.*,*.err excludeFolders = *.plastic*,*ThorUpdater*,*Documentacion*,*foxunit*,*foxunit_*,*pruebas varias*,*versiones*,*datos_test* diff --git a/foxbin2prg.exe b/foxbin2prg.exe index 398f5a8..c61ddf2 100644 Binary files a/foxbin2prg.exe and b/foxbin2prg.exe differ diff --git a/foxbin2prg.prg b/foxbin2prg.prg index 299abd7..c99b4d0 100644 --- a/foxbin2prg.prg +++ b/foxbin2prg.prg @@ -207,6 +207,7 @@ * 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) * 11/01/2018 FDBOZZO v1.19.49.7 Bug Fix: Cuando se convierte la estructura de un DBF puede dar error si existe un campo llamado I o X (Francisco Prieto) +* 30/01/2018 FDBOZZO v1.19.49.8 Bug Fix: Cuando se convierte a texto una libreria corrupta con registros duplicados, se genera el error "The specified key already exists" (Kirides) * * *--------------------------------------------------------------------------------------------------- @@ -327,6 +328,7 @@ * 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) * 11/01/2018 Francisco Prieto Reporte Bug v1.19.49: Cuando se convierte la estructura de un DBF puede dar error si existe un campo llamado I o X (Arreglado en v1.19.49.7) +* 30/01/2018 Kirides Reporte Bug v1.19.49: Cuando se convierte a texto una libreria corrupta con registros duplicados, se genera el error "The specified key already exists" (Arreglado en v1.19.49.9) * * *--------------------------------------------------------------------------------------------------- @@ -13927,6 +13929,29 @@ DEFINE CLASS c_conversor_bin_a_prg AS c_conversor_base + PROCEDURE ignoreCorruptedObjects(lcCursor) + * Issue#17 - Error, The specified key already exists + * Para evitar este error se deben ignorar los objetos corruptos (duplicados) + * Se identifican porque la clase principal el campo Reserved1 tiene vacio en vez de "Class" + LOCAL lcParentObjName, lcSetDeleted + SELECT (lcCursor) + lcSetDeleted = SET("Deleted") + SET DELETED OFF + + SCAN FOR PLATFORM = "WINDOWS" AND EMPTY(Parent) AND EMPTY(Reserved1) + lcParentObjName = LOWER(OBJNAME) + DELETE + SKIP + DELETE REST WHILE GETWORDNUM(LOWER(PARENT) + '.', 1, '.') == lcParentObjName + SKIP -1 + ENDSCAN + + SET DELETED &lcSetDeleted. + RETURN + ENDPROC + + + PROCEDURE ignoreIncorrectDefinedObjects(lcCursor) * Issue#15 - VFP Designer ignored objects should be ignored by FoxBin2Prg LOCAL lcObjName, lcParent, lcParentObjName, loObjs as Collection @@ -13948,7 +13973,10 @@ DEFINE CLASS c_conversor_bin_a_prg AS c_conversor_base * 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 ) + * NOTA: Podría estar duplicado, pero no se trata ese caso aquí + IF NOT EMPTY(lcParentObjName) AND loObjs.GetKey(lcParentObjName) = 0 + loObjs.Add( '', lcParentObjName ) + ENDIF ELSE * No existe: se ignora DELETE @@ -15353,7 +15381,10 @@ DEFINE CLASS c_conversor_vcx_a_prg AS c_conversor_bin_a_prg lnStepCount = 7 USE IN (SELECT("_TABLAORIG")) - * Issue#15: Ignorar objetos mal definidos + * Issue#17: Error, The Specified Key already exists (Kirides) + .ignoreCorruptedObjects('TABLABIN') + + * Issue#15: Ignorar objetos mal definidos (Doug Hennig) .ignoreIncorrectDefinedObjects('TABLABIN') INDEX ON PADR(LOWER(PLATFORM + IIF(EMPTY(PARENT),'',ALLTRIM(PARENT)+'.')+OBJNAME),240) TAG PARENT_OBJ ADDITIVE