https://foro.gambas-es.org/viewtopic.php?f=15&t=6108 ----------------------------------- v3ctor Viernes, 06 Enero 2017, 03:48 Reto 13(v3ctor) Parchea Taller 2015 V 0.3.8 ----------------------------------- buenas, que mejor que aprovechar un error de programación para dar la posibilidad de aprender algo nuevo. el programa taller 0.3.8 tiene un error grave Overflow. el objetivo del reto es encontrar el código erróneo corregirlo y crear un parche. enviarlo a uno.cero@live.com antes de los 15 días después de publicado el reto, (enviar solo el parche) si el parche corrige el error has resuelto el reto y se publicara la lista de quienes lo resolvieron. saludos. [b][size=18][color=darkgreen]Lista de Usuarios que resolvieron el reto:[/color][/size][/b] [b][size=24][color=darkred]1- Shell[/color][/size][/b] Martes, 17 Enero 2017, 23:05 ----------------------------------- v3ctor Viernes, 06 Enero 2017, 18:11 Re: Reto 13(v3ctor) Parchea Taller 2015 V 0.3.8 ----------------------------------- una ayudita para los novatos. tienes que bajarte el código fuente de taller 2015 versión 0.3.8 que esta en sourceforge(ese contiene el error) abre el proyecto, ejecuta el programa y ve donde esta el error, repara el error. después vas a Proyecto-->parchear y te pedirá el paquete con el archivo fuente que contiene el error y te creara el parche ese archivo lo envías a mi correo. saludos. ----------------------------------- Shell Lunes, 16 Enero 2017, 09:57 Re: Reto 13(v3ctor) Parchea Taller 2015 V 0.3.8 ----------------------------------- v3ctor: Acabo de bajarlo. Veré que puedo hacer. :roll: Supongo que el error se crea nada más ejecutarlo. Por que lo es buscar en que momento se produce, puede llevar más tiempo. :o Estuve buscando overflow (desbordamiento). [url=https://es.wikipedia.org/wiki/Desbordamiento_de_b%C3%BAfer]Desbordamiento de búfer ¿ Qué pasó al final con la versión que tenías en la granja ?. Un día comentabas de que se había borrado algo. Saludos ----------------------------------- Shell Lunes, 16 Enero 2017, 10:16 Re: Reto 13(v3ctor) Parchea Taller 2015 V 0.3.8 ----------------------------------- Me gustaría comentar que: La aplicación no se cuelga, al menos lo que he visto desde la primera ejecución desde fuente. Es que salta antes otro error. Aunque tu lo tienes bien definido ese problema. Es que si ese no lo solucionaste la aplicación no funcionaría nada. He visto otro, pero ese no lo voy a comentar por ahora. ( Puede que sea el problema del reto ) :roll: Por cierto, ¿ que tiempo llevas con Taller ?. ( Para que veas por que no hago una aplicación completa ). :roll: P.d Oye, esto es una publicidad para que la gente se baje la aplicación, ¿ no ?.. :twisted: Saludos ----------------------------------- v3ctor Lunes, 16 Enero 2017, 16:02 Re: Reto 13(v3ctor) Parchea Taller 2015 V 0.3.8 ----------------------------------- pista 1 [img]https://foro.gambas-es.org/files/images/2261/pista1.png[/img] pista 2 bugtracker de taller2015 en este foro ----------------------------------- v3ctor Lunes, 16 Enero 2017, 16:08 Re: Reto 13(v3ctor) Parchea Taller 2015 V 0.3.8 ----------------------------------- [quote user="Shell" post="36696"]Me gustaría comentar que: La aplicación no se cuelga, al menos lo que he visto desde la primera ejecución desde fuente. Es que salta antes otro error. Aunque tu lo tienes bien definido ese problema. Es que si ese no lo solucionaste la aplicación no funcionaría nada. He visto otro, pero ese no lo voy a comentar por ahora. ( Puede que sea el problema del reto ) :roll: Por cierto, ¿ que tiempo llevas con Taller ?. ( Para que veas por que no hago una aplicación completa ). :roll: P.d Oye, esto es una publicidad para que la gente se baje la aplicación, ¿ no ?.. :twisted: Saludos[/quote] me interesa saber que errores descubriste, pasa la data cuando tengas un tiempito, saludos. ----------------------------------- Shell Lunes, 16 Enero 2017, 20:08 Re: Reto 13(v3ctor) Parchea Taller 2015 V 0.3.8 ----------------------------------- Un error que se produce al iniciarse en el ordenador del trabajo y no lo hace en el de casa, lo tienes en la lista de tareas [b]Línea 122. Clase Respaldo. Da error si la carpeta no esta montada o no existe.[/b] [code linenumbers=false syntax=gambas] Public Sub Respaldar(Optional forzar As Boolean, Optional manual As Boolean, Optional ruta As String, Optional nombre As String) As Boolean If Not IsNull(ruta) Then $RutaDestino = ruta If Not Access($RutaDestino) Then Return False 'nueva a prueba Endif If manual Then If IsNull(nombre) Then $Rutafinal = $RutaDestino &/ $NameArchivo & "_" & Replace$(CString(Date), "/", "-") & "_RM" 'RM=Respaldo Manual Else $Rutafinal = $RutaDestino &/ $NameArchivo & "_" & Replace$(CString(Date), "/", "-") & "_RM_" & nombre Endif Else $Rutafinal = $RutaDestino &/ $NameArchivo & "_" & Replace$(CString(Date), "/", "-") & "_RA" 'RA=Respaldo Automático Endif If Exist($Rutafinal) Then If forzar Then Kill $RutaFinal Wait 0.1 Copy $RutaOrigen To $RutaFinal If Not manual Then $FechaUltimoRespaldo = Now Return True Else Return False Endif Else 'Añadido de Shell: Creo la ruta que contiene la variable $RutaFinal Mkdir $Rutafinal Copy $RutaOrigen To $RutaFinal 'TODO:da error si la carpeta no esta montada o no existe arreglar If Not manual Then $FechaUltimoRespaldo = Now Return True Endif End [/code] Esa modificación que ves que he hecho, en el de casa le da igual. Añadiendo esa modificación en el ordenador del trabajo, he podido acceder al icono de mostrar ordenes ( el dibujo de la casa) , mostrando un dibujo en el fondo de la ventana principal. (Ordenadores) Este el procedimiento que falla en el ordenador del trabajo, usando la modificación que he añadido al crear el directorio. [code linenumbers=false syntax=gambas] Public Sub RespaldoAutomatizado() Dim periodo As Byte Dim UltimoRespaldo As Date periodo = Settings["RespaldoAutomatico/Periodo", 1] If IsNull(Settings["RespaldoAutomatico/FechaUltimoRespaldo"]) Then Settings["RespaldoAutomatico/FechaUltimoRespaldo"] = CString(Now) 'original Settings.Save Wait 0.1 UltimoRespaldo = CDate(Settings["RespaldoAutomatico/FechaUltimoRespaldo"]) Else UltimoRespaldo = CDate(Settings["RespaldoAutomatico/FechaUltimoRespaldo"]) Endif RespaldoBD = New Respaldo(periodo, RutaBaseDatos, DirRespaldos, UltimoRespaldo) If Settings["RespaldoAutomatico/Activado", True] = True Then If RespaldoBD.UltimoRespaldo() Then If RespaldoBD.Respaldar() Then Ventanas.EjecutarSonido(FMain.SError) Ventanas.Mgv1.Open("Se respaldo correctamente en:
" & RespaldoBD.RutaFinal) Settings["RespaldoAutomatico/FechaUltimoRespaldo"] = RespaldoBD.FechaUltimoRespaldo Settings.Save Else Ventanas.Mgv1.Open("No se pudo respaldar en:
" & DirRespaldos) Endif Endif Endif [/code] Se ejecuta esta linea: [code linenumbers=false syntax=gambas] Ventanas.Mgv1.Open("No se pudo respaldar en:
" & DirRespaldos) [/code] No he creado una base, ojo. Solo ejecuto la aplicación por primera vez. En el ordenador de casa me ha dado tiempo a ver el error que tu quieres para el reto. Es un desbordamiento en un bucle while. Parecen errores de cosas que o no se han creado o que pueden faltar al inicio de la aplicación por primera vez. A ver que me dices. :-) Saludos ----------------------------------- Shell Martes, 17 Enero 2017, 01:05 Re: Reto 13(v3ctor) Parchea Taller 2015 V 0.3.8 ----------------------------------- Bien. Pues ahora ya funciona sin problemas. No tengo ni idea el motivo. He solucionado el problema del desbordamiento. Luego te envío el parche. Saludos ----------------------------------- v3ctor Martes, 17 Enero 2017, 02:39 Re: Reto 13(v3ctor) Parchea Taller 2015 V 0.3.8 ----------------------------------- [quote user="Shell" post="36721"]Bien. Pues ahora ya funciona sin problemas. [b](en realidad no es que funcione sino que no se cuelga que es diferente)[/b] No tengo ni idea el motivo. [b](esto no lo sabes porque no tienes bien claro el error y como se arregla,pero... estas cerca) [/b] He solucionado el problema del desbordamiento. Luego te envío el parche. Saludos[/quote] el parche tiene que ajustarse al reto, solo solucionar el problema de desbordamiento y además que el programa funcione correctamente en esa parte del código, pues con tu parche no se muestran los datos que deberían mostrarse. estas cerca pero no has solucionado el reto saludos. ----------------------------------- Shell Martes, 17 Enero 2017, 09:57 Re: Reto 13(v3ctor) Parchea Taller 2015 V 0.3.8 ----------------------------------- Bueno, puedo cambiar el parche. Pero de todas maneras te preguntaré por privado para no dar pistas a los demás. :roll: ----------------------------------- Shell Martes, 17 Enero 2017, 10:03 Re: Reto 13(v3ctor) Parchea Taller 2015 V 0.3.8 ----------------------------------- Observo algo muy curioso con Gambas. Tengo la versión original de Taller 2015 y la que he modificado. Al ejecutar por primera vez la aplicación no da error, vale. Hasta que voy a "cierto lugar", entonces se produce el desbordamiento. Una vez producido el error. Cuando la aplicación vuelve a ejecutarse. Gambas va directamente al lugar del error y no se vuelve a mostrar la interfaz o ejecutar la aplicación hasta que no se solucione el error. :o Debe quedar algún tipo de rastro que Gambas crea ( puede que el trazado de pila ) como un archivo y al ejecutarse la aplicación es lo primero que Gambas va a observar. Saludos ----------------------------------- v3ctor Martes, 17 Enero 2017, 13:06 Re: Reto 13(v3ctor) Parchea Taller 2015 V 0.3.8 ----------------------------------- [quote user="Shell" post="36727"]Observo algo muy curioso con Gambas. Tengo la versión original de Taller 2015 y la que he modificado. Al ejecutar por primera vez la aplicación no da error, vale. Hasta que voy a "cierto lugar", entonces se produce el desbordamiento. Una vez producido el error. Cuando la aplicación vuelve a ejecutarse. Gambas va directamente al lugar del error y no se vuelve a mostrar la interfaz o ejecutar la aplicación hasta que no se solucione el error. :o Debe quedar algún tipo de rastro que Gambas crea ( puede que el trazado de pila ) como un archivo y al ejecutarse la aplicación es lo primero que Gambas va a observar. Saludos[/quote] sucede porque por defecto el programa empieza con un filtro, al tu elegir ese otro filtro(donde esta el error) el programa lo recuerda, al cargarse de nuevo el programa, lee el archivo settings con la ultima vista usada (la del error) y obviamente el error se produce inmediatamente. ----------------------------------- v3ctor Martes, 17 Enero 2017, 13:13 Re: Reto 13(v3ctor) Parchea Taller 2015 V 0.3.8 ----------------------------------- este reto tiene dos cosas interesantes.... la primera aprender a parchear con gambas la segunda es como cada uno arregla la rutina que no es algo difícil [b]tercera pista:[/b] la rutina del error tiene por objeto obtener un rango de fechas para filtrar las ordenes del programa taller( es una vista) en la vista se tienen que mostrar las ordenes o registros desde el primer día del mes anterior al actual hasta la fecha actual (también podría ser hasta el ultimo día del mes actual) vamos che, a ver si alguno mas se prende al reto que esta entretenido. saludos. ----------------------------------- Shell Miercoles, 18 Enero 2017, 00:41 Re: Reto 13(v3ctor) Parchea Taller 2015 V 0.3.8 ----------------------------------- Te he enviado un nuevo parche. :roll: ----------------------------------- v3ctor Miercoles, 18 Enero 2017, 02:09 Re: Reto 13(v3ctor) Parchea Taller 2015 V 0.3.8 ----------------------------------- Felicitaciones shell!!!! ya estas primero en la lista de usuarios que lo han resuelto! y los demás? vamos gente que seguro se enriquecerán como programadores y los que recién empiezan ni que hablar. ----------------------------------- Shell Miercoles, 18 Enero 2017, 10:10 Re: Reto 13(v3ctor) Parchea Taller 2015 V 0.3.8 ----------------------------------- [quote] vamos gente que seguro se enriquecerán como programadores y los que recién empiezan ni que hablar. [/quote] Yo lo he visto interesante. El problema real, es no entender o no llegar a comprender que es lo que se quiere hacer. Que es lo más importante para resolver un problema. No fue algo fácil de resolver a la primera. :roll: A mi me gustó el primer día que vi tu aplicación. Y me parece muy útil para el fin que la creaste. Tiene de todo, módulos, formularios, clases. En este caso tienes bien definido que quieres hacer y lo que necesitas para tu proyecto. Saludos