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 18-05-2004
febito febito is offline
Miembro
 
Registrado: dic 2003
Posts: 28
Poder: 0
febito Va por buen camino
deshablitar las exception

Hola a todos: Como se puede deshablitar las exception. Para que no surjan en runtime. Trabajo con Delphi 7. Gracias.
Responder Con Cita
  #2  
Antiguo 18-05-2004
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
¿Para qué quieres hacer tal cosa?

Las excepciones son un mecanismo imprescindible para el manejo de...

... excepciones!

Si no las manejas las probablidades de que tu aplicación termine desastrosamente son bastante altas.

// Saludos
Responder Con Cita
  #3  
Antiguo 18-05-2004
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
Como dice román, no es una práctica para nada recomendable, pero puedes hacerlo manejando tu propio Application.OnException y que no haga nada.

Saludos!
__________________
delphi.com.ar

Dedique el tiempo suficiente para formular su pregunta si pretende que alguien dedique su tiempo en contestarla.
Responder Con Cita
  #4  
Antiguo 18-05-2004
Avatar de jachguate
jachguate jachguate is offline
Miembro
 
Registrado: may 2003
Ubicación: Guatemala
Posts: 6.254
Poder: 27
jachguate Va por buen camino
Solo comentar que la solución comentada por delphi.com.ar te da la posibilidad de manejar vos mismo las excepciones... pero no de deshabilitarlas. De hecho, son parte "intrinseca" de object pascal, y no pueden ser deshabilitadas, pues toda la VCL se basa en ellas para manejar situaciones de error y otros casos "excepcionales".

Hasta luego.

__________________
Juan Antonio Castillo Hernández (jachguate)
Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate
Responder Con Cita
  #5  
Antiguo 18-05-2004
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Cita:
Empezado por jachguate
Solo comentar que la solución comentada por delphi.com.ar te da la posibilidad de manejar vos mismo las excepciones... pero no de deshabilitarlas.
Sí puedes deshabilitarlas:

Código Delphi [-]
procedure TForm1.ApplicationEvents1Exception(Sender: TObject; E: Exception);
begin
  {
    Sé irresponsable, no hagas nada
  }
end;

// Saludos
Responder Con Cita
  #6  
Antiguo 18-05-2004
Avatar de jachguate
jachguate jachguate is offline
Miembro
 
Registrado: may 2003
Ubicación: Guatemala
Posts: 6.254
Poder: 27
jachguate Va por buen camino
Cool

Cita:
Empezado por roman
Sí puedes deshabilitarlas:
Amigo román... quizas es una cuestión de interpretación... pero de esta forma no "deshabilitas" las excepciones, pues estas, de hecho, se seguirán elevando a lo largo y ancho del código, algunas podrian ser (y de hecho serán) manejadas en bloques try/except/end. Y las que lleguen "vivas" al ciclo principal de la aplicación serian simplemente ignoradas.

Pero seguirán existiendo, no???

Al menos yo interpreto el "deshabilitarlas" como el querer impedir su existencia, o programar al antiguo estilo de Turbo Pascal, donde este genial invento no existía aún.

Hasta luego.

__________________
Juan Antonio Castillo Hernández (jachguate)
Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate
Responder Con Cita
  #7  
Antiguo 19-05-2004
sanxpue sanxpue is offline
Miembro
 
Registrado: jul 2003
Posts: 196
Poder: 21
sanxpue Va por buen camino
Talking Quitar las excepciones...

es como cortarle las patas a un caballo de carreras

uuuuupppppsssssssssss

Pero weno que nos explique para que las quiere quitar no creen je je
__________________
saludos desde Puebla Mexico..
asanxt@hotmail.com
"como siempre a sus ordenes y siempre con buena cara"
'lolita me excitas, perversa piel de melocotón'
Responder Con Cita
  #8  
Antiguo 19-05-2004
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
jachguate

Hombre, creo que en realidad estamos de acuerdo y se trata sólo de la utilización de términos. Cuando dije:

Cita:
Empezado por roman
Las excepciones son un mecanismo imprescindible para el manejo de...

... excepciones!
realmente debí decir:

Cita:
Empezado por roman
El manejo de las excepciones son un mecanismo imprescindible para el manejo de...

... excepciones!
Desde luego que las excepciones no se inhabilitarán y precisamente en eso radica la alta peligrosidad de ignorarlas olímpicamente.

En fin, creo que ha sido una confusión de términos de mi parte. Sé muy bien que ni tú ni yo haríamos cosa semejante al evento que puse arriba.

// Saludos
Responder Con Cita
  #9  
Antiguo 19-05-2004
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 28
Lepe Va por buen camino
De vuelta a la pregunta original del hilo, creo que mas bien la pregunta surge por desconocimiento real de que está ocurriendo.

Febito, muchas de las excepciones son por Access violation read/write de tal o cual direccion de memoria

Si es un Read, significa que tu aplicación se ha ido a leer a una parte de la memoria donde no hay variables de tu programa, es decir, puedes estar leyendo una parte de la memoria donde reside algo perteneciente a otro programa o incluso del sistema operativo, y por supuesto tu aplicación se va a volver loco con el valor leido si no tratas la excepcion, o arreglas el código fuente.

Si es un Write, entonces es todavia más pelilgroso, ya que estas escribiendo en una zona de memoria donde reside otro programa, por tanto, fallará tu programa y probablemente, el sistema operativo u otra aplicación que tengas abierta.

Lo que sí podrías hacer es un log con las excepciones que se producen, de esta forma el usuario final del programa no vé la pantalla de acces violation, pero de vez en cuando, mirarías ese log y verias donde se producen errores para corregirlos, CORRIGELOS !!! no las dejes ahí.

Existen multitud de componentes para este fin, yo uso las LMDTOOLS, en el que se puede deshabilitar el mostrar las excepciones, y derivarlo a un log directamente, el resultado es algo parecido a esto:
Código:
LogFile started: 18/05/2004 15:38:12
Application    : Project1
Path/ExeName   : E:\Delphi\Proyectos\Project1.exe
***************************************

Entries:
00001:  [15:38:12] [18/05/2004]TPanel (Name: pnlImprimir): TblAlbaranes:
 Dataset not in edit or insert mode, Address: 004E7650
Como puedes apreciar es muy importante darle nombre a todos los componentes que usas ya que si te dice (Name: Panel1) ... a saber donde está ese panel en la aplicación

El código en delphi es este:
Código Delphi [-]
procedure TFrmMdi.LMDApplicationCtrl1Exception(Sender: TObject;
  E: Exception; var Cancel: Boolean);
begin
  LMDApplication.LogException(sender);
  Cancel := True; // evita que salga en pantalla
end;

Intuyo que esto es lo que querias preguntar, no febito??
Responder Con Cita
  #10  
Antiguo 19-05-2004
Novás Novás is offline
Miembro
 
Registrado: oct 2003
Ubicación: Galicia
Posts: 146
Poder: 21
Novás Va por buen camino
Hola Lepe he probado el código que has mencionado en tu respuesta

Código Delphi [-]
procedure TFrmMdi.LMDApplicationCtrl1Exception(Sender: TObject;
  E: Exception; var Cancel: Boolean);
begin
  LMDApplication.LogException(sender);
  Cancel := True; // evita que salga en pantalla
end;

he insertado el control LMDApplicationCtrl y he insertado esta función es su evento OnException. Hasta este momento todo funcionaba correstamente pero al intentar introducir la primera línea de código

Código Delphi [-]
LMDApplication.LogException(sender);

Me dice lo siguiente...:

Unable to invoke Code Completion due to errors in source code...

¿Que estoy haciendo mal?
__________________
Hay dos cosas infinitas: el Universo y la estupidez humana. http://www.cybertarjetas.net
Responder Con Cita
  #11  
Antiguo 19-05-2004
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 28
Lepe Va por buen camino
Tú ?? nada. Yo, pues no haber dicho que tienes que añadir en los uses la Unit lmdclass


Cita:
Empezado por Novás
Me dice lo siguiente...:

Unable to invoke Code Completion due to errors in source code...

¿Que estoy haciendo mal?
Veo que estas usando las Gexpert. Cuando da ese error es casi siempre porque falta la unidad correspondiente o error de sintaxis

SAludos

Última edición por Lepe fecha: 19-05-2004 a las 11:28:32.
Responder Con Cita
  #12  
Antiguo 19-05-2004
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Cita:
Empezado por Lepe
Veo que estas usando las Gexpert.
¿GExpert? Pero si este mensaje de error existe desde que Delphi es Delphi

// Saludos
Responder Con Cita
  #13  
Antiguo 20-05-2004
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 28
Lepe Va por buen camino
Pues ese mensaje siempre me sale en el ide de delphi en un showmessage desde que instalé las Gexpert. Siempre creia que el compilador daba el "undeclared idenfier" para ese caso.

Gracias por la aclaración Román
Responder Con Cita
  #14  
Antiguo 21-05-2004
Avatar de jachguate
jachguate jachguate is offline
Miembro
 
Registrado: may 2003
Ubicación: Guatemala
Posts: 6.254
Poder: 27
jachguate Va por buen camino
En tiempo de diseño, si tenes activado el code insight, el mensaje aparece siempre en la ventana de errores del compilador/busquedas, cuando no ha sido posible encontrar una referencia válida para mostrar la lista de propiedades de un objeto. Probablemente los GExpert provoquen que este mensaje (que debe ser una excepción del pharser) aparezca en un dialogo.

Hasta luego.

__________________
Juan Antonio Castillo Hernández (jachguate)
Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate
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


La franja horaria es GMT +2. Ahora son las 23:51:04.


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