Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Otros entornos y lenguajes > C++ Builder
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 10-12-2010
rogeliogamberro rogeliogamberro is offline
Miembro
 
Registrado: oct 2008
Posts: 23
Poder: 0
rogeliogamberro Va por buen camino
Thumbs down Porque no funciona Try Catch??

Si coloco StrToInt("1.65"); o StrToInt("Hola"); No entra al catch y aparece el cartel del link adjunto. si coloco StrToInt("15"); funciona correctamente. Alguien sabe a que se debe eso?

Mis intensiones es ir leyendo un txt como AnsiString e irlo conviertiendo en el formato que necesito y en caso de que sea erroneo mostrar un mensaje de error. Muchas Gracias!

http://img37.imagevenue.com/img.php?..._122_174lo.JPG
Responder Con Cita
  #2  
Antiguo 10-12-2010
Toni Toni is offline
Miembro
 
Registrado: may 2003
Ubicación: Barcelona - España
Posts: 364
Poder: 21
Toni Va por buen camino
Hola,

Por lo que se puede ver si que lanza una excepcion, lo que sucede que si lo ejecutas desde el propio entorno es el propio builder el que te muestra la excepcion y si les das a continuar te entrara en el cath()

Esto lo puedes configurar en el entorno de programacion, si quieres que se pare en las excepciones o no.
__________________
Saludos,

Bitman
Responder Con Cita
  #3  
Antiguo 10-12-2010
Avatar de Al González
[Al González] Al González is offline
In .pas since 1991
 
Registrado: may 2003
Posts: 5.604
Poder: 29
Al González Es un diamante en brutoAl González Es un diamante en brutoAl González Es un diamante en brutoAl González Es un diamante en bruto
Hola.

El mensaje de error que te aparece es normal, es un aviso del depurador para el programador y no un mensaje de error que vaya a mostrarse al usuario. Si reanudas la ejecución del programa notarás que entra a la sección catch, tal como lo esperas.

Puedes observar la diferencia si ejecutas la aplicación .exe desde fuera del IDE. Aun así, si quieres inhibir tal aviso, existe la opción Exception Types to Ignore (en Delphi así se llama) en las opciones del depurador.

Por otra parte, quizá sea mejor idea utilizar la función TryStrToInt (que imagino también existe en C++Builder). Es más adecuada para comprobar si una cadena de caracteres es un número entero válido o no.

Espero haber ayudado. Un saludo.

Al González.
Responder Con Cita
  #4  
Antiguo 10-12-2010
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola.

Para que no se pare la ejecución del programa con la excepción hace lo siguiente:

Tools -> Debugger Options -> Language Exception -> Desmarcá la opción: Stop on Delphi Exceptions

Saludos.

Última edición por ecfisa fecha: 10-12-2010 a las 17:34:14.
Responder Con Cita
  #5  
Antiguo 13-12-2010
rogeliogamberro rogeliogamberro is offline
Miembro
 
Registrado: oct 2008
Posts: 23
Poder: 0
rogeliogamberro Va por buen camino
Smile

Muchisimas gracias por sus respuestas. Han sido de gran ayuda. Ahora me queda una duda con respecto a la verificacion del ingreso de datos tipo TDateTime o TDate. Alguno puede sugerirme como hacer la verificación de forma eficiente suponiendo que el usuario escribe la fecha o fecha y hora en un Edit? Muchas Gracias!
Responder Con Cita
  #6  
Antiguo 14-12-2010
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola rogelio.

Yo lo haria con TMaskEdit, te va a evitar un montón de verificaciones...
La máscara podés definirla en diseño desde la propiedad EditMask del TMaskEdit haciendo doble click sobre ella.
En el ejemplo la defino por código por que resulta más claro que explicar todos los pasos para hacerlo en forma visual.

Un ejemplo muy sencillo como para orientarte:
Código:
...
/* Form1 OnShow: ajustar máscara  */
void __fastcall TForm1::FormShow(TObject *Sender)
{
MaskEdit1->EditMask = "!99/99/0000;1;_"; // mascara: dd/mm/aaaa
 MaskEdit1->Text = "";
 MaskEdit1->AutoSelect = false;
}

/* MaskEdit OnExit: verificar que la fecha es válida */
void __fastcall TForm1::MaskEdit1Exit(TObject *Sender)
{
  if (MaskEdit1->Text != "") {
    try {
      StrToDate(MaskEdit1->Text);
    }
    catch (...) {
      ShowMessage("Error en la fecha ingresada");
      MaskEdit1->SetFocus();
    }
  }
}
Para más información sobre las máscaras, busca en la ayuda de Builder con la palabra : FormatMaskText

Saludos.

Última edición por ecfisa fecha: 14-12-2010 a las 06:02:52.
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

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
Locale con TDbf ¿ porque no me funciona? userlazarus Conexión con bases de datos 2 11-06-2006 16:06:46
Porque funciona solo en Internet Explorer??? danytorres HTML, Javascript y otros 6 21-10-2005 18:23:01
Este qry no me funciona, porque? alcides SQL 2 22-07-2005 19:33:03
podeis decirme porque no funciona este codigo?¿?¿? kassel PHP 4 14-02-2004 01:47:03
podeis decirme porque no funciona este codigo?¿?¿? kassel Conexión con bases de datos 1 26-01-2004 14:50:01


La franja horaria es GMT +2. Ahora son las 15:48:45.


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