FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Buscar | Temas de Hoy | Marcar Foros Como Leídos |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
||||
|
||||
Error: Al salir de un programa que llama a un proc de una dll que conecta con BDD
Hola, muy buenas a todos.
Pongo la duda en el hilo de varios porque es un conjunto de cosas y, aunque tengo muy acotado el error, no sé si es exactamente por eso. Bueno, explico: Con Rad Studio XE2 Delphi Update 1. He creado un proyecto dll que tiene un procedimiento que conecta con BDD(base de datos), utilizo dbexpress con SqlServer 2005, mediante un TSQLConnection. Desde otro programa llamo a dicho procedimiento y, en principio, funciona correctamente. El problema viene cuando salgo de este programa, que me da el siguiente error 'access violation at 0x0643e187: read of adress 0x065967f4' y le doy a continuar y me aparece de manera indefinida (hasta que haga ctrl + F2) el siguiente error (con el mismo tipo de excepción C$00000005) 'access violation at 0x02895dd2: read of adress 0x046c8648'. Sé que con los mensajes de error no se sabe cual es el problema, pero pongo todo por si acaso, sé que son errores de acceso a memoria, pero no sé por donde puede venir. Pruebas y más información: 1.- Desde la dll se abre un formulario. He probado a abrir el formulario y no hay problema, es sólo cuando hago un "conex.conected(TSQLConnection) := true". Después me aseguro de cerrar la conexión y todo, pero nada, peta. principal dll
Frm de la dll
__________________
La Madurez se llama... ~~~Gaia~~~ |
#2
|
||||
|
||||
Me tengo que ir, mañana seguiré explicando...
__________________
La Madurez se llama... ~~~Gaia~~~ |
#3
|
||||
|
||||
Sólo lee el texto comentado que hay al principio del fichero library MyDll, que has puesto como primer código y pruébalo.
__________________
Germán Estévez => Web/Blog Guía de estilo, Guía alternativa Utiliza TAG's en tus mensajes. Contactar con el Clubdelphi P.D: Más tiempo dedicado a la pregunta=Mejores respuestas. |
#4
|
||||
|
||||
Muchas gracias Neftali, como no tengo mucha idea de inglés ni reparé en ese texto.
He hecho lo que pone pero el problema persiste, ahora sólo me sale un mensaje en lugar de dos (quiero decir, que las direcciones de memoria son las mismas desde el primer mensaje, antes en el primero era distinto de los posteriores). Sigo sin saber por donde van los tiros, sé que algo tiene que ver con la conexión a la base de datos, pero no entiendo por qué, son conexiones independientes (la del programa y la de la dll, aunque sea a la misma base de datos).
__________________
La Madurez se llama... ~~~Gaia~~~ |
#5
|
||||
|
||||
De momento lo he solucionado haciendo un ejecutable con parámetros.
Le daré más vueltas porque me jode no saber que pasa., además, es la dll lo que queda más "pro". Un saludo y que paséis buen fin de semana.
__________________
La Madurez se llama... ~~~Gaia~~~ |
#6
|
||||
|
||||
Después de mucho investigar... no he conseguido que funcione pero creo que sé cual es la fuente del error. Es el dbExpress.
Lo explico mejor: 1.- He creado una dll con dos funciones, una que conecta con la base de datos mediante dbExpress y otra, que hace exactamente lo mismo que la anterior pero con ADO. 2.- A ambas funciones les he puesto mensajes para saber si conectaban a base de datos y si desconectaban de las mismas. (siempre he obtenido el resultado esperado) 3.- Creo un programa con dos botones, uno llama a las primera función y el otro a la segunda función. Resultados: a) Cuando el programa ha llamado a la primera función, al cerrar el programa da un error eterno (que se repite una y otra vez) imposible de capturar. b) Cuando el programa NO ha llamado a la primera función, al cerrar el programa no da ningún problema (por mucho que llame a la segunda función).
__________________
La Madurez se llama... ~~~Gaia~~~ |
#7
|
||||
|
||||
Datos curiosos:
Dato 1: De hecho, en la primera función, si comento el "Conection.Conected = true" (esto hace que no se conecte, lo sé), el programa si cierra. Dato 2: Y digo más, en la función uno, si le paso parámetros incorrectos de la base de datos y el "Conection.Conected = true" no consigue conectar... también falla. (Lo comento por si alguien piensa que se queda algo de la conexión abierta, es el simple hecho de intentar conectar lo que hace que el programa que llama a la dll pete al cerrar).
__________________
La Madurez se llama... ~~~Gaia~~~ |
Herramientas | Buscar en Tema |
Desplegado | |
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
Capturar Excepcion-Error al salir de mi programa, para que no me salga | mancurnino | Varios | 1 | 11-05-2008 22:04:11 |
Problemas al salir del programa | silviodp | Varios | 6 | 11-09-2007 18:50:51 |
Iniciar con windows programa que se conecta a DB... | JuanErasmo | Firebird e Interbase | 3 | 27-08-2007 21:50:45 |
Salir del programa | Luli | Varios | 4 | 08-04-2006 04:01:14 |
Error en la ejecucuión de programa que llama reportes de crystal... | dunia_lv | Impresión | 0 | 12-05-2005 20:14:02 |
|