Ver Mensaje Individual
  #2  
Antiguo 31-08-2004
Morphine Morphine is offline
Miembro
 
Registrado: ago 2004
Posts: 28
Reputación: 0
Morphine Va por buen camino
Otra opcion que he probado es:

Código Delphi [-]
procedure TfrmPrincipal.FormCreate(Sender: TObject);
begin
      // pasamos el control de las excepciones a
      // nuestra funcion maneja problemas =)
      Application.OnException := ManejoExcepciones;
end;
 
procedure TfrmPrincipal.ManejoExcepciones(Sender: TObject; e:Exception);
var
   Mensaje, Contexto: string;
   int_ref, transac: string;
begin
   int_ref := 'pg_indel: ERROR:  Cannot insert a duplicate key into unique';
   transac := 'pgTrans: pqReadData() --  read()';
   // Error de Base de Datos
   if e.ClassType = EDataBaseError then
     begin
        // Manejo de Identificadores duplicados
        if SameText(Copy(e.Message,1,Length(int_ref)),int_ref) then
          begin
           MessageDlg('El registro que desea insertar ya se encuentra asignado.', mtWarning, [mbOK], 0);
           exit;
          end;
        // Pérdida de conexión en run-time
        if SameText(Copy(e.Message,1,Length(transac)),transac) then
          begin
           MessageDlg('Se ha perdido la conexión con el servidor de base de datos!'
                 +chr(13)+'Finalizando la aplicación...', mtWarning, [mbOK], 0);
           Application.Terminate;
          end;
        // otros errores
           MessageDlg('El servidor de Base de Datos ha reportado un error.'
                 +chr(13)+'Mensaje del error:'+chr(13)+ e.Message, mtWarning, [mbOK], 0);
        exit;
     end;
   // Error de Conversión de Datos
   if e.ClassType = EConvertError then
     begin
      Application.MessageBox('Error de conversión de datos.'+chr(13)+
          'Este error podría deberse a que ingresó datos que no corresponden al formato'+
          ' en que debería ser ingresados. Verifiquelos y vuelva a cargar.', 'Conversión de Datos', 
          MB_ICONEXCLAMATION + MB_OK);
      exit;
     end;
   // Violación de Acceso en Memoria
   if e.ClassType = EAccessViolation then
     begin
      Application.MessageBox('Violación de acceso en memoria!', 'Violación de Acceso', MB_ICONEXCLAMATION + MB_OK);
      exit;
     end;
   // Error de Conversión de Datos Variant (String, Int, Variant, etc)
   if e.ClassType = EVariantError then
     begin
        MessageDlg('Error de conversión de tipo de datos.', mtWarning, [mbOK], 0);
        exit;
     end;

   // For debug purposes
   Mensaje := e.Message;
   Contexto := IntToStr(e.HelpContext);
   MessageDlg('Error del Sistema.'+
              chr(13) +
              'Mensaje del error: ' +
              chr(13) +
              e.Message +
              chr(13) +
              'Contexto: ' +
              chr(13) +
              Contexto,
         mtError, [mbOK], 0);
end;
No pude cambiar el mensaje de error.

Última edición por __cadetill fecha: 31-08-2004 a las 21:21:37.
Responder Con Cita