domingo, mayo 18, 2014

Nueva versión v1.19.22 de FoxBin2Prg (Arreglo de bugs, mejoras y optimizaciones)

Por: Fernando D. Bozzo

Está liberada la versión v1.19.22 de FoxBin2Prg con los siguientes cambios:

  • Bug Fix scx/vcx: La propiedad Picture de una clase form se pierde y no muestra la imagen. No ocurre con la propiedad Picture de los controles (Fidel Charny). Este problema ocurre cuando se ordenen las propiedades internas del form de cierta forma. FoxPro las necesita en cierto orden --que no está documentado-- para que funcionen correctamente. Regenerando el binario desde el tx2 existente se soluciona el problema.
  • Bug Fix scx/vcx: Algunas opciones del optiongroup pierden el width cuando se subclasan de una clase con autosize=.T. (Miguel Duran). Este problema está relacionado con el anterior, ya que también depende del orden de las propiedades internas, por lo que he realizado un estudio más a fondo de todas las propiedades de todas las clases de VFP 9 (ver Excel en directorio TESTS del proyecto) y las he agrupado para poder obtener un orden de propiedades con las ubicaciones más habituales. Para disminuir la posibilidad de conflictos, hay un segundo order que va por clase, donde se usa el orden exacto que usa VFP 9. El mejor caso es aquel donde cada clase se programan sus propiedades de una sola vez (aquí se usa el ordenamiento exacto por clase), y el peor caso es cuando se subclasa un contenedor de controles y en la subclase se redefinen las propiedades de los mismos (aquí se usa la lista genérica porque no se sabe qué propiedad corresponde a qué clase, ya que FoxPro guarda todo como una gran lista).
  • Agregado soporte de evaluación de propiedades desde archivo externo (props_*.txt). Todo lo anterior, y también por motivos de performance y mantenimiento, ha motivado la creación de listas de propiedades en archivos de texto independientes, uno por cada clase y uno genérico que las contiene a todas.
  • Bug Fix scx/vcx: La detección incorrecta de PROCEDURE/ENDPROC/TEXT/ENDTEXT puede causar pérdida de algunos métodos en determinadas circunstancias (Andres Mendoza). Si por alguna casualidad, en el código hay alguna variable que comience por "TEXTxxx", esto ocasiona que el parser la confunda con la estructura TEXT/ENDTEXT y considere todo lo posterior como si fuera parte del mismo método. El efecto visual en el tx2 es la pérdida de la indentación y la duplicación de los métodos antes agrupados como métodos vacíos. Si se conserva este tx2 se puede recuperar el binario original regenerándolo con esta versión, pero si se usó la versión defectuosa (v1.19.21 y anteriores) para regenerar el binario, en el peor caso podrían perderse métodos y ser necesario restaurar desde un backup previo.
  • Mejoras en Tests Unitarios de comparación de bitmap de pantallas antes/después (se compara contra regenerado de regenerado por si hubiera algún cambio). Estos han sido unos tests costosos de montar, ya que el objetivo era probar todos los controles visuales de FoxPro en distintas configuraciones (control y subclase de control), como así también la comprobación de que se siguen ejecutando correctamente algunos eventos como Access, Assign y programmaticChange, para tener más seguridad de los cambios realizados en el ordenamiento de las propiedades.
  • Agregado Unit Testing de la configuración por defecto, por archivo y por parámetros. Se han agregado tests automatizados para los tres tipos de configuración, donde el orden de prioridad es: 1-Parámetros, 2-foxbin2prg.cfg, 3-Valores por defecto
  • Agregado Unit Testing para comprobar generación de clases, forms, reportes y menús. De varios componentes se han guardado las versiones texto para poder compararlas con las que se regeneren desde los binarios, y así poder saber si algún cambio futuro provoca algún cambio en la generación de los tx2.
  • Agregado nuevo switch OptimizeByFilestamp (activo por defecto) que permite desactivar la optimización de regeneración de archivos según el timestamp, en el caso de querer regenarar siempre. Desde la versión v1.19.21 hay una optimización sugerida por Matt Slay, en la que si el archivo a regenerar (ej: un binario) tiene una fecha/hora más nueva que el archivo base (ej: un tx2), significa que no es necesario volver a regenerar porque el archivo a generar (destino) es más nuevo que el archivo origen. Igualmente, como siempre pueden haber casos especiales donde este no sea el comportamiento deseado y se requiera regenerar siempre el destino, hay un nuevo switch, tanto en el archivo de confguración foxbin2prg.cfg como por parámetro, llamado OptimizeByFilestamp, donde se puede inhabilitar asignándole "0".
  • Optimización en garbage collect en todo el código. Se han hecho muchos cambios para mejorar la recolección de basura (liberación de objetos y referencias de objetos principalmente), lo que ha mejorado perceptiblemente la estabilidad durante la ejecución de los tests automatizados.


Como actualizar el FoxBin2Prg existente:
Con descargar el zip y reemplazar los archivos en el sitio que los hayan puesto antes es suficiente.


Link  de descarga:
https://vfpx.codeplex.com/releases/view/116407


 Saludos!

No hay comentarios:

Publicar un comentario