Ver Mensaje Individual
  #7  
Antiguo 17-12-2008
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Reputación: 28
Lepe Va por buen camino
Puedes usar la opción de defcon1 perfectamente.... pero en lugar de usarlo en un try... except, coloca ese código del except en un ApplicationsEvents.OnException.

Así la misma rutina de gestión de excepciones la tienes centralizada en un único sitio y te vale para todos los errores de la aplicación.

Si no quieres que muestre todo el mensaje cárgate el mensaje original de la excepción y pones el tuyo.... a ver si me explico con código:
en el applications.OnException
Código Delphi [-]
var 
  personal, original:string;
// E:Exception viene definida en los parámetros de este evento.
 personal := EmptyStr;
 if E is EIBInterbaseError then
 begin
  case EIBInterBaseError(E).IBErrorCode of
  $14000019: personal := 'Deadlock producido, pepe';
  $14000888: personal := 'El título no puede estar vacio';
  end;

  MiLog.Add(E.Message); // grabar mensaje original
  E.Message := personal;
  Application.ShowException(E);
end;
Application.ShowException no estoy muy seguro, creo que es la forma correcta, pero no recuerdo si pertenece a "Application" o es una rutina escondida...

También puedes usar en Interbase un prefijo para todas tus excepciones, por ejemplo al definir la excepción lo haces así:
Código SQL [-]
exception "Mi_excepcionIBInicio El usuario no puede estar en blanco  Mi_excepcionIBFin"
exception "Mi_excepcionIBInicio El código debe ser mayor que cero Mi_excepcionIBFin"
Ahora en el applications.OnException buscas la cadena prefijo "Mi_excepcionIBInicio" y sólo copias el texto hasta el sufijo "Mi_excepcionIBFin"

saludos
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.

Última edición por Lepe fecha: 17-12-2008 a las 16:35:26.
Responder Con Cita