FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
Error de Memoria Super Raro
Buenas Tardes muchachos, un saludo cordial.
Les escribo buscando algo de luz a un problemita que me esta sucediendo en el proyecto que trabajamos actualmente. espero poder dar una explicación para que la ayuda sea mas conforme. Mi aplicacion basicamente es un sistema administrativo, funciona bajo un modelo cliente servidor, hago uso de componentes zeos y la base de datos principal es postgresql 9.5, todo esto esta muy chevere, viene la parte complicada, los formularios que hago uso tengo varias plantillas dependiendo del tipo de formulario (formularios independientes, formularios maestro/detalle, formularios dependientes, etc), basicamente son formularios bases y mediante herencia creo los nuevos lo que me permite escribir menos codigo. El problema lo estoy teniendo en un formulario de cotización o presupuesto, técnicamente el formulario funciona bien y hace todas sus operaciones bien, dado que es una vulgar copia del formulario de facturacion de clientes (con algunas pequeñas diferencias), pero me esta pasando que cuando abro dicho formulario (presupuesto) hago uso de el, agrego registros consulto, imprimo reportes etc etc etc todo muy bien, pero cuando cierro mi aplicación me manda un error de acceso a memoria (EAccessViolation), todos los demás formularios similares (facturación clientes, pedidos clientes, anticipos clientes, etc etc) funcionan muy bien sin este error, y el error solo me ocurre cuando por alguna razón abro el formulario, mientras no lo abro y cierro mi aplicacion todo OK. Les adjunto par de imagenes de los formularios para que tengan una idea de los componentes usados y el codigo de ambas para ver si ven algo en particular que yo no estoy viendo. Espero no confundirlos mucho, cabe destacar que mi aplicacion crea los formularios dinamicamente, y basicamente se crean de la manera como lo hace Application.CreateForm(Form,TFORM), asi que no hay ningun secreto en especial de como crear los formularios. Les doy las gracias de antemano por cualquier idea que me puedan dar. Saludos. |
#2
|
||||
|
||||
Los Access Violations no son muchas las posibilidades:
El depurador no te lleva a la linea que produce la excepcion? la forma mas sencilla de rastrearlo es con un depurador. Revisa los destructores. Revisa el codigo que no acceda a cosas que no fueron creadas/hayan sido liberada de memoria. Pon puntos de ruptura y sigue paso a paso. Mira hasta donde llega el programa y donde se rompe |
#3
|
||||
|
||||
Para aportar mas al hilo:
Interesante que invocar a un metodo constante sobre una instancia nil o con basura no eleve una excepcion. Con metodo constante me refiero a que no utiliza informacion interna del objeto como en el ejemplo |
#4
|
||||
|
||||
Y este es el caso mas oscuro de todos
Salida: Código:
MetodoNormal: Project1.TAlgunaClase MetodoVirtual: Project1.TAlgunaClase Metodo Constante: Hola mundo MetodoConstanteVirtual: Hola mundo virtual |
#5
|
||||
|
||||
Cita:
jejeje caramba, no me imaginé que esto sucediera, ya estaba sorprendido con el primer caso donde MetodoConstante funcionaba y ahora esto... vaya oscuridad
__________________
Lecciones de mi Madre. Tema: modificación del comportamiento, "Pará de actuar como tu padre!" http://www.purodelphi.com/ http://www.nosolodelphi.com/ |
#6
|
||||
|
||||
Hola a todos,
Interesante cuanto menos... |
#7
|
|||
|
|||
Cita:
Gracias por la respuesta! Realmente es lo que hago! pero no encuentro el problema! pero es como digo que el codigo funciona bien en otros modulos pero ese en particular no! le echaste un ojo a los codigos? muy complejos? |
#8
|
||||
|
||||
Simplemente a ojo es imposible depurarlo. Debes ir paso a paso y usar el depurador de Delphi! El mismo te dice en que linea ocurren los errores, y podes ir instruccion por instruccion siguiendo la ejecucion.
Yo probaria poner puntos de ruptura en los eventos de los controles, a ver si cuando cierras el form se dispara alguno (por ejemplo algunos de los OnExit) y hace uso de memoria no asignada |
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
error raro | 11_8_88 | C++ Builder | 1 | 03-12-2008 21:37:01 |
error raro en firebird | leo_037 | Firebird e Interbase | 10 | 03-02-2008 20:22:23 |
Un error raro..... | Rafe | Varios | 3 | 29-07-2005 00:07:02 |
un error un poco raro | merlin | Conexión con bases de datos | 2 | 19-07-2004 13:45:06 |
|