Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 03-02-2010
cocute cocute is offline
Miembro
 
Registrado: nov 2008
Posts: 403
Poder: 16
cocute Va por buen camino
se pueden desactivar en algún lado los mensajes de error?

pues eso, uso un navegador por pestañas, y es un poco lio revisar todo el código, y me costará un poco saber donde tengo el error,
el caso es que si abro una pestaña y me voy a la primera y la cierro me sale el error:
"list index of bounds (-1)"
El codigo lo tengo preparado para que no ocurra, pero en algunos casos no se porque me sale.

La cosa es, mientras le encuentro una solución adecuada existe algun modo de forzar para evitar que salgan mensajes de error como este "list index of bounds (-1)" aunque se produzcan, ya que el error sale pero al aceptarlo funciona todo correctamente.

gracias
Responder Con Cita
  #2  
Antiguo 03-02-2010
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.293
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Personalmente creo que no es buena idea enmascarar los errores para que no aparezcan, ni te lo recomendaría, porque al final "siempre" trae más problemas.

De todas formas, siempre puedes capturar las excepciones a nivel global (ya hemos hablado antes en los foros del tema), pero como digo no creo que sea una buena práctica ni una buena solución. Revisa el Objeto TApplication y OnException y HandleException de este objeto.

¿No te será más fácil, activar las exceptiones en diseño y ver dónde falla el código?
__________________
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.
Responder Con Cita
  #3  
Antiguo 03-02-2010
cocute cocute is offline
Miembro
 
Registrado: nov 2008
Posts: 403
Poder: 16
cocute Va por buen camino
Muchas gracias, lo he solucionado de este modo, no se si esto se puede simplificar de algún modo sin poner tanto código:

Código Delphi [-]
declarando esto primero:
procedure MyExceptionHandler(Sender : TObject; E : Exception );
 
 
procedure TForm1.MyExceptionHandler(
  Sender : TObject; E : Exception );
var
  wRetVal : Word;
begin
 
end;
 
procedure TForm1.FormCreate(Sender: TObject);
begin
  Application.OnException :=  MyExceptionHandler;

end;
lo que he hecho es coger este ejemplo y dejar el procedimiento MyExceptionHandler en blanco para que no haga nada.
http://www.chami.com/tips/delphi/011497D.html
No se si hay algun modo de hacer lo mismo más simple.
Pero vamos lo importante es que me funciona como esperaba.

Soy consciente de que no es nada recomendable hacer esto, pero en mi caso lo considero una excepción, vamos que se lo que me hago.
Responder Con Cita
  #4  
Antiguo 03-02-2010
Avatar de delphi.com.ar
delphi.com.ar delphi.com.ar is offline
Federico Firenze
 
Registrado: may 2003
Ubicación: Buenos Aires, Argentina *
Posts: 5.932
Poder: 27
delphi.com.ar Va por buen camino
¿Te parece tanto código?... me sumo a la sugerencia de Neftali, es un error de principiantes pensar que es malo mostrar los mensajes de error, luego nos damos cuenta lo importantes que son para poder depurarlos. Si tienes errores, tienes que preocuparte por solucionarlos, no por taparlos, salvo que estos sean manejados correctamente.

Saludos!
__________________
delphi.com.ar

Dedique el tiempo suficiente para formular su pregunta si pretende que alguien dedique su tiempo en contestarla.
Responder Con Cita
  #5  
Antiguo 03-02-2010
Avatar de rgstuamigo
rgstuamigo rgstuamigo is offline
Miembro
 
Registrado: jul 2008
Ubicación: Santa Cruz de la Sierra-Bolivia
Posts: 1.646
Poder: 17
rgstuamigo Va por buen camino
Arrow

Cita:
Empezado por cocute Ver Mensaje
Muchas gracias, lo he solucionado de este modo, no se si esto se puede simplificar de algún modo sin poner tanto código:

Código Delphi [-]declarando esto primero: procedure MyExceptionHandler(Sender : TObject; E : Exception ); procedure TForm1.MyExceptionHandler( Sender : TObject; E : Exception ); var wRetVal : Word; begin end; procedure TForm1.FormCreate(Sender: TObject); begin Application.OnException := MyExceptionHandler; end;

lo que he hecho es coger este ejemplo y dejar el procedimiento MyExceptionHandler en blanco para que no haga nada.
http://www.chami.com/tips/delphi/011497D.html
No se si hay algun modo de hacer lo mismo más simple.
Pero vamos lo importante es que me funciona como esperaba.

Soy consciente de que no es nada recomendable hacer esto, pero en mi caso lo considero una excepción, vamos que se lo que me hago.
Bueno ese código te va funcionar siempre y cuando no hayas capturado alguna excepción dentro de tu código por ejemplo has la prueba a poner dentro del evento Onclick de un boton esto:
Código Delphi [-]
procedure TForm1.Button1Click(Sender: TObject);
var a:Integer;
begin
   try
     a:=StrToInt('Hola 123');//<-linea de código que provocará una Excepcion
   except on E: Exception do
      ShowMessage('Esta Excepcion no deberia salir pero Sí sale por que la he capturado..'); 
   end;
end;
Se supone que cuando asigno un Procedure(MyExceptionHandler en este caso) al evento OnException del objeto Application tal como lo has hecho, al ocurrir una excepción deberia ejecutarse el mismo, pero como vemos, eso no ocurre si hemos capturado alguna excepcion en alguna parte., lo que significa que lo que has hecho no es muy seguro que digamos.
Saludos...
__________________
"Pedid, y se os dará; buscad, y hallaréis; llamad, y se os abrirá." Mt.7:7
Responder Con Cita
  #6  
Antiguo 03-02-2010
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.293
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Cita:
Empezado por cocute Ver Mensaje
Muchas gracias, lo he solucionado de este modo
Creo que así vamos mal...
Tal vez no has entendido lo que hace ese procedimiento. Una prueba:

(1) Comenta la línea del OnCreate.
(2) Pon dos botones con códigos como estos:
(3) Ejecuta y luego haz lo mismo descomentando la línea.

Código Delphi [-]
procedure TForm1.Button1Click(Sender: TObject);
var
  i,j,k:Integer;
begin
  i := (50DIV 10 - 5);
  j := 220;
  k := j DIV i;    //!!!!!!!  DIVISION por CERO
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
  raise EAccessViolation.Create('Accessssss Violation!!!!!!')
end;

El problema es que con lo que has hecho DESAPARECEN TODAS las excepciones de tu programa.

Lo lógico (dentro de la poca lógica que tiene esto) sería capturar sólo la excepción que necesitas. Y yo añadiría que ya que la capturas, al menos guardarla en algun sitio (log, txt,...).

No se si me explico.
__________________
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.
Responder Con Cita
  #7  
Antiguo 03-02-2010
[coso] coso is offline
Miembro Premium
 
Registrado: may 2008
Ubicación: Girona
Posts: 1.678
Poder: 0
coso Va por buen camino
Hola,
el error list index out of bounds te sale debido a que en alguna lista estas intentando acceder a algun elemento que no existe (por encima del count), o bien si es una lista de objetos, a algun objeto que has eliminado de la lista. Lo mejor seria que nos pusieras el codigo para saber por donde te falla. Saludos.
Responder Con Cita
  #8  
Antiguo 04-02-2010
cocute cocute is offline
Miembro
 
Registrado: nov 2008
Posts: 403
Poder: 16
cocute Va por buen camino
ya dije que solo lo queria para usarlo mientras le encuentro solución, que no creais que es tan facil, no pongo el código ya que es muy largo y un poco lioso de explicar, y dependo no solo de mi código si no del código base y del componente base que he cogido y que tampoco lo controlo totalmente. Es un programa para uso personal y se lo que debe de hacer, si me sale un mensaje de error que me es molesto pero no afecta para nada al funcionamiento del programa, si en principio lo puedo evitar aunque sea de este modo tan chapucero pues eso es lo que hay.

la base del programa es el ejemplo es el
04 - New_Window_Tabs_Demo_2
del componente de Bsalsa EmbeddedWB
pero el ejemplo es muy básico y he añadido tantas cosas.....
el hecho de manejar los tabs y webbrowsers dinámicamente es lo que tiene.

El programa funciona perfectamente con webs normales, el problema es cuando se abren en nuevas pestañas enlaces que estan en javascript y demas cosas que no he probado, entonces es cuando empiezan los problemas que no puedo controlar ya que quizas son cosas del propio componente TEmbeddedWB que no estan muy claras.


¿como debería de hacer para ocultar solo el "List index of bounds (-1)" que me da el pagecontrol y no afecte al resto de excepciones?

Última edición por cocute fecha: 04-02-2010 a las 22:54:31.
Responder Con Cita
  #9  
Antiguo 05-02-2010
cocute cocute is offline
Miembro
 
Registrado: nov 2008
Posts: 403
Poder: 16
cocute Va por buen camino
al final después de darle vueltas a la cabeza en la cama he localizado y solucionado el error, así que ya no me hace falta esto,
de todos modos seguro que puede venir bien en alguna ocasión que nos encontremos que nuestro programa nos de mensajes de error que no podamos controlar y que no interfieran en el funcionamiento del programa, está claro que anulando el error específico no todos como habia hecho yo.
Responder Con Cita
  #10  
Antiguo 05-02-2010
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 29
Lepe Va por buen camino
La verdad que no sé donde está el "lío".

Para esos tipos de errores suelo activar Tools -> debugger Options -> Language Exception -> Stop on delphi Exception.

Así el IDE se para antes de lanzar la excepción, ves el call stack y miras tus funciones y las variables... seguro que está por ahí, pones puntos de ruptura y listo...así de fácil
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.
Responder Con Cita
  #11  
Antiguo 19-07-2010
mcs mcs is offline
Miembro
 
Registrado: may 2007
Ubicación: Girona
Posts: 229
Poder: 18
mcs Va por buen camino
Hola,

Yo creo que si es buena idea usar el capturador general de excepciones. Justamente ahora estaba buscando información sobre este, porqué sabía que tenía que existir, pero no sabía donde.

Mi intención es hacer una ventanica como la de windows cuando falla el programa (Se ha producido la excepción XXXX, quiere enviar un informe de errores? Junto al stack trace, configuración, etc). Creo que para la versión definitiva de un producto es una buena idea, y hasta para cuando se está debugando y el IDE sólo nos avisa de que hay una excepción (pero no donde ni porqué). Bueno, esto de debugando podría ser que tuviese alguna opción desactivada o así, pero siempre me ocurre lo mismo...

Por otra parte, usar un capturador global de excepciones para esconder que el programa tiene errores, en mi opinión es una gran chapuza. Y sobretodo si se puede reproducir el problema facilmente (como era el caso de cocute). Me alegro que haya encontrado el error, y espero que desactive el evento este...

Saludos,

Marc
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
quitar icono un lado del reloj, sin desactivar aplicacion ejecutandose sakuragi Windows 7 16-01-2008 17:27:49
PHP error al conectar Firebird (y en el PC de al lado va perfecto) papulo PHP 3 27-04-2007 15:30:42
Problemas con los mensajes de error del IDE urush30 Varios 2 03-01-2007 16:54:13
Mensajes de error erick_jesus Conexión con bases de datos 1 31-05-2006 17:53:47
Alguien sabe de algun Chat(Componente) que no se cuelgue al recibir mensajes???? AGAG4 Varios 2 15-12-2004 15:55:47


La franja horaria es GMT +2. Ahora son las 06:18:44.


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
Copyright 1996-2007 Club Delphi