Club Builder - Foros de discusión Club Builder
Foro de C++Builder en español
 
 FAQFAQ   BuscarBuscar   MiembrosMiembros   Grupos de UsuariosGrupos de Usuarios   RegistrarseRegistrarse 
 PerfilPerfil   Entra para ver tus mensajes privadosEntra para ver tus mensajes privados   EntrarEntrar 

Ayuda para Capturar error

 
Publicar nuevo tema   Responder al tema    Foros de discusión -> Consultas
Ver tema anterior :: Ver tema siguiente  
Autor Mensaje
Mensaje    Asunto: Ayuda para Capturar error Responder citando

hola a todos, necesito ayuda para acabar mi programita, necesito que cuando se produzca un error, cualquier error, salga una ventanita y diga por ejemplo:

Revisa los datos!!!! tontin!

Por otra parte me ocurre un error cuando meto un dato en un edit, decir antes que el dato que meto es un float, y le doy al backspace o lo selecciono y lo borro, me sale un mensaje de invalid floating point operation.

¿a que es debido?
¿como se puede arreglar?


un saludo y gracias
Volver arriba
Ver perfil de usuario Enviar mensaje privado
Mensaje    Asunto: Responder citando

Para lo de los errores puedes utilizar try and catch, busca en la ayuda el funcionamiento porque yo lo utilizo de una forma muy basica :

try
{
// Instrucciones
}
catch(...)
{
//Mensaje si se produce error
}

Lo del error seguramente no introduces bien el numero, o realizas alguna operación despues en la que intentas convertir lo del edit a float.
Deberias controlar si el edit esta en blanco que no realice la instrucciones asociadas.

*** Puede que no sea eso, pero tampoco t puedo decir muxo mas con los datos que has puesto.

Espero habert ayudado, un saludo y suerte.
Volver arriba
Ver perfil de usuario Enviar mensaje privado MSN Messenger
Mensaje    Asunto: Responder citando

gracias por la respuesta, pero:

¿Que significan los puntos de dentro del catch?

gracias
Volver arriba
Ver perfil de usuario Enviar mensaje privado
Mensaje    Asunto: Responder citando

Indican que se desa interceptar cualquier tipo de excepcion que pudea producirce en el bloque try

Significan que te va a aparecer un mensaje en igles, por que la excepcion, es de builder y no del Sistema Operativo..

para que no te salga el mensaje de error, realiza lo siguiente...

Código:

AnsiString Entrada;
    int Dividendo, Divisor;
    float Cociente;

       // Pedimos el dividendo
    Entrada = InputBox("División", "Introduzca el dividendo", "");
    Dividendo = StrToInt(Entrada); // y el divisor
    Entrada = InputBox("División", "Introduzca el divisor", "");
    Divisor = StrToInt(Entrada);


// Esto da un error en la division.. si divisor es cero
      Cociente = Dividendo / Divisor; // Realizamos la división
       // y mostramos el resultado
   ShowMessage("Cociente = " + AnsiString(Cociente));
// pero si las lineas anteriores, se cambian por esto funciona mejor


try
{
      Cociente = Dividendo / Divisor; // Realizamos la división
}
catch(...)
{
//Mensaje si se produce error
     ShowMessage("El Divisor no puede ser cero");
}

o bien tambien puedes utilizar multiples excepciones..


con una forma de las exepciones
Código:

AnsiString Entrada;
   int Dividendo, Divisor;
   float Cociente;
   bool Error;

   while(true) { // Repetir continuamente
     Error = false; // En principio el indicador de error será False

     try { // Inicio del bloque a proteger de excepciones
         Entrada = InputBox("Divide", "Introduzca el dividendo: (0 para terminar) ", "");
         Dividendo = StrToInt(Entrada);

         if(Dividendo == 0) break; // Si el dividendo es 0 salir del bucle

         Entrada = InputBox("Divide", "Introduzca el divisor: ", "");
         Divisor = StrToInt(Entrada);

                 // Realizamos la operación de división.
         Cociente = Dividendo / Divisor;
     }
     catch(EDivByZero &) { // En caso de que se produzca una excepción
        // de división por cero
          ShowMessage("No se puede dividir por cero");
          Error = true;
     }
     catch(EIntError &N) {
          ShowMessage("Operación inválida :" + N.Message);
          Error = true;
     }
     catch(Exception &N) {
          ShowMessage("Se produce la excepción :" + N.Message);
          Error = true;
     }

     if(!Error) // Si no se ha producido un error
        ShowMessage("Cociente= " + FloatToStr(Cociente)); // Mostramos el resultado

    } // Fin del bucle While


verifica tambien, como generar tus propias excepciones con la palabra reservada throw
_________________
Cool
Volver arriba
Ver perfil de usuario Enviar mensaje privado Enviar email MSN Messenger
Mensaje    Asunto: Responder citando

Muchas gracias por la respuesta, la verdad es que en este foro he encontrado muchas cosas que no he sido capaz de encontrar en muchos libros.

Un saludo a todos.
Volver arriba
Ver perfil de usuario Enviar mensaje privado
Mensaje    Asunto: Responder citando

¡La experiencia y la paciencia son las madres de la ciencia! Wink
_________________
Un saludo

Necesitamos tu ayuda: Envía AI al 27595 (Coste 1,20 euros + IVA)
Volver arriba
Ver perfil de usuario Enviar mensaje privado Enviar email
Mensaje    Asunto: Responder citando

algundia estaras, ayudando a gente, que tiene las dudas que tu mismo estas contestando, recuerda todos empezamos igual..


saludos...

bye
_________________
Cool
Volver arriba
Ver perfil de usuario Enviar mensaje privado Enviar email MSN Messenger
Mostrar mensajes de anteriores:   
Cambiar a:  
No puedes publicar temas nuevos en este foro
No puedes responder a temas en este foro
No puedes editar tus mensajes en este foro
No puedes borrar tus mensajes en este foro
No puedes votar en las encuestas de este foro


Hosting WordPress Indedmedia desde 3,99 €
© 2002–2026 Club Builder · Funciona con phpBB.