Problema Stack overflow
hola Buenas noches, Estoy trabajando con un listado de ventas el cual esta desarrollado en delphi 2010 y mysql-5. El cual cuenta con un formulario principal y un formulario secundario que es el "listado de ventas" en este se encuentra 2 dbgrid uno para el "detalle de ventas", el otro para las "ventas"
los cuales cada uno se encuentran asociado a un TzQuery de los componentes Zeos. La idea es cuando yo selecione una venta en el dbgrid "Ventas" me muestre sus respectivos detalles de venta. Para ello en los TzQuery en la propiedad MasterSourcer y MasterFields de cada TzQuery los tengo relacionado a sus data source y a su clave foranea. es decir Query de ventas MasterSourcer: dsDetalleVenta// este seria el datasource del detalle MasterFields : idventa Query de Detalle de ventas MasterSourcer: dsVenta // este seria el datasource del la venta MasterFields : idventa Bien al formulario lo llamo de la siguiente forma: y es aqui que me sale el siguiente error "project drugstore.exe raised exception class EStackOverflow with message 'Stack overflow' usando el depurador me marca error en la siguiente linea
dejo las consulta sql de cada query: Query venta:
Query Detalle
espero que puedan ayudarme desde ya muchas gracias |
Si pudiste activar los dos query sin problema, entonces el problema esta en el form
* Puede ser en el constructor * Puede ser en algun evento OnShow/OnActivate Me inclino mas por la primera. Pon un punto de ruptura en el constructor |
Hola Belén.
Por el mensaje de error que mencionas, yo revisaría lo siguiente:
Pero probablemente resulte sólo en parchear el asunto, lo ideal es descubrir la causa que está provocando el desbordamiento de la pila. Saludos :) |
Aparentemente es lo dicho antes por los compañeros, un bucle infinito, por ejemplo:
|
Cita:
Revisa tambien que tu formulario tfListadosVentas no esté creado automátcamente desde el inicio (por si acaso) Saludo, |
Gracias Por responder
Cita:
*Solo poseo 3 formularios el de venta, el de productos, y finalmente el listado de ventas. Los cuales solo utilizo una variable que es el total para realizar las sumas de los sub totales luego lo demas lo manego con un TstringGrid * En el Formulario tfListadodeVentas solo tengo los 2 dbGrid y nada mas. Ahora intentado sacar una linea en la llamada por ejemplo
no abre directamente el formulario se queda cargando luego lo que tu me recomiendas perdon no tengo mucho campo en delphi, con esta linea la verdad que no entiendo que hacer
|
Gracias
Cita:
Hola. No tengo nada en esos eventos solo lo unico que toque fue asignarle a cada dbgrid su query. y Realizar la llamada desde el menu principal que el codigo era el siguiente
|
Hola Belen12.
Lo que te sugerí, incrementa el tamaño del stack. Y apuntaba al caso que hubieras echo un gran consumo de memoria en las declaraciones, pero por lo que comentas no es el caso. Ahora me quedó una duda: ¿ El programa se queda colgado en, como mencionas en el mensaje #6 o en, como aparece en el mensaje #7 ? Por otro lado, ¿ Sabes como usar los puntos de interrupción(breakpoint) como te sugirió Agustin en el mensaje #2 ? Saludos :) |
Gracias
Hola buenas tardes. si lo de tu sugerencia no lo se hacer perdon lo de incrementar el tamaño del stark
Si exacto el programa se queda congelado en la linea
con respeto a la interrupción(breakpoint) la se manejar mas o menos ahora mira lo que me sucede cuando ejecuto y quiero entrar al formulario me sale lo siguiente dejo una imagen para que se pueda apreciar mejor http://www.subirimagenes.com/otros-delphii-9622519.html |
Hola Belen12.
A ver, empecemos por mirar si fmodulo está creado al momento del llamado agregando una línea a tu código:
Saludos :) |
Gracias
Cita:
|
Hola.
Bien, paso siguiente revisa que:
Saludos :) |
Hola
Cita:
|
Hola.
Veo en tu imágen que el error que estas recibiendo es access violation y este se produce generalmente cuando intentas referenciar un objeto que aún no ha sido creado o ya fué liberado. Dado que has manejado todo de forma visual... Lo único que se me ocurre es que revises en las opciones del proyecto si el TDataModule está en la lista de Auto-create forms. De no ser así, fmodulo no estaría disponible cuando lo llamas y se produciría un error del tipo access violation. Si fuera el caso, la solución mas rápida es pasarlo de Available forms a Auto-create forms, desde el IDE de Delphi: Project > Options > Forms: Saludos :) |
Cuando se me presentan este tipo de casos lo que hago es volver a reconstruir todo de a poco hasta que doy con el problema. Estas usando variables globales? Lo digo porque este tipo de cosas me pasaba muy a menudo cuando usaba las variables que me autocreaba el IDE para los form y datamodule, pero se reducio bastante cuando empece a hacerme cargo de los tiempo de vida de los objetos: en general, si en algun momento me equivoco, la excepcion es mas facil de localizar y solucionar
|
Hola
Cita:
|
Y que tal si pones el stacktrace cuando te sale el error?
|
Hola
Cita:
te lo dejo aqui disculpa si no se vio http://www.subirimagenes.com/otros-delphii-9622519.html |
Eso no es un stackoverflow. Es un acces violation (ose, apuntar a una direccion invalida de memoria).
Lo que debe hacer es en el depurador parar justo en la linea. Luego examina el valor de las variables/propiedades, Una de esas esta null. Debes recorrer todo el arbol de: Cita:
|
Cita:
Los enlaces que pones sí que no muestran imagen alguna. |
La franja horaria es GMT +2. Ahora son las 15:03:56. |
Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi