![]() |
Ayuda con un error.No hay manera
Tengo una aplicación echa en delphi, que es de operaciones a una base de datos SQL, y cuando cierro la aplicación, me da el siguiente error.
Exception EBitsError in module Aplicacion.exe at 0001FB47 Bits index out of range. el numero 0001FB47,puede variar, a veces es el 0001FB27 o algun otro. Pero solo me lo da cuando cierro la aplicación. Si alguien puede ayudarme por favor, se lo agradeceria mucho.No hay manera de saber porque me da este error. Un saludo Muchas gracias de antemano. |
Hola :
Tienes alguna operacion en los eventos de cierre de la aplicacion??? como OnFormClose o algun otro ??? |
Si tengo un insert en la base, pero este insert, no es, porque lo comento y me sigue dando error.
Y en el Data Module no tengo nada en el ondestroy. Es como si algo se quedara tocado cuando estoy trabajando con la aplicación y al cerrar, me da el error. Pero el programa me compila perfectamente, y mientras estoy trabajando con el no me da ni un error, y hace todo lo que tiene que hacer. Es al cerrar la aplicación me salta este error. |
Yo creo que la unica manera de que quede trabajo pendiente al cerrar la aplicacion seria que tengas Threads, pero como no lo comentas lo dudo.
Ahora bien... obviamente el error esta en alguna instruccion que se desencadena al cerrar la aplicacion.... Estos eventos pueden ser onClose de un Form, de un datamodule, o bien al cerrar una conexion, o un dataset ... y otras cosas ...... yo en tu caso apuntaria por esos lados ... sino ves nada ... comenta que es lo que hace tu aplicacion y vemos que onda Suerte ;) |
Ese error suele darse cuando tienes un Objeto de la clase TBits, y asignas un Bit[n], donde n esta fuera del rango establecido por la propiedad Size.
Revisa tu código donde uses objetos de esta clase, o ejecuta tu proyecto con la opción Tools\Debugger Options\Language Exceptions\Stop on Delphi Exceptions como True. Saludos! |
Hola de nuevo.
No utilizo TBits en ningún momento. He utilizado el Stop on delphi exceptions, y se me para al cerrar la aplicación, me da el mismo error, y a continuación se me cierra el programa.Con lo qual me pasa lo mismo que sin Stop on delphi exceptions. Me he dado cuenta, que me pasa cuando he entrado a un determinado form de la aplicación. Pero ese formulario lo creo y lo destruyo como todos los demás, y no tengo ningún problema, con los demás. Lo curioso es que no me da el error con ese form, sino que me lo da cuando cierro la aplicación habiendo entrado a ese form. No se, parce que en algún sitio intgerno de delphi, algo es incompatible a algo que hago dentro de ese form. |
Cita:
Saludos! |
Cita:
Algo que puedes intentar es marcar la opción Project/Options/Compiler/Use Debug DCUs abrir la unidad classes.pas del código fuente de Delphi, buscar el procedimiento TBits.Error, colocar un "breakpoint" en raise EBitsError.CreateRes(@SBitsIndexError); y correr tu aplicación. Cuando cierres ésta y la ejecución se detenga en el "breakpoint" revisa la ventana "Call stack"`para intentar ver qué rutina generó la excepción. // Saludos |
Otra cosa (independiente de lo anterior):
En el momento en que salga la excepción y antes de cerrar el cuadro de mensaje, cámbiate al IDE de Delphi y abre Search|FindError y anota ahí la dirección que te marca el mensaje de la excepción (0001FB27 o similar) Esto debe llevarte al punto del código que genera la excepción. Si te abre una ventana de CPU en lugar de código muy posiblemente sea lo que comentaba: alguna componente de terceros mal hecha o mal usada. // Saludos |
Buenas Gente
Muchas gracias por contestar. Bueno he encontrado de donde viene el error. Es muy curioso porque como ya dije,me da error solo si he entrado a un determinado formulario(le llamare Formulario X), y cuando cierro el formulario 1 (al salir de la aplicación) , pasa por el siguiente procedimiento procedure TGlyphList.Delete(Index: Integer); begin if Used[Index] then begin Dec(FCount); Used[Index] := False; end; end; del pas Buttons. Used = Tbits. Tengo tres botones en el form1 que tiene glyph, son BitBtn. Si les saco los graficos o sea los Glyph ya no me da error la aplicación. me da error en la linea if Used[Index] then Esto es algo interno de delphi, porque yo no he tocado nunca este pas. Lo curioso es que tengo alguna aplicaciones, con glyph en el primer formulario y no me pasa esto. Creo,que el formulario X debo hacer algo mal, o algo esta mal, y al salir de la aplicación y cargarse los bitbtn del form1, la lista interior de Glyphs del programa, cuando la va destruyendo, pues llega un momento que peta. No se , de momento sacando los glyph de los bitbtn, ni un problema me da.Esta es la solución momentanea, pero claro esto no es una buena solución. Muchas gracias a todos Otro Saludo |
La franja horaria es GMT +2. Ahora son las 10:10:42. |
Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi