FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
Intentando con Try ....
Hola a todos...
Estoy intentando validar una entrada de fecha en un MaskEdit con el siguiente codigo: ******** procedure TfrmSolicitud.edFnacExit(Sender: TObject); var Hoy : TDateTime; Year, Month, Day: Word; begin try begin Hoy := strtodate(edFnac.text); // cargo Hoy con la cadena del MaskEdit DecodeDate(Hoy, Year, Month, Day); // intento la decodificación Editboxsiguiente.setfocus; // si la fecha es correcta y no ocurre error pasa siguiente control. end; except // Si ocurre un error : begin Application.MessageBox('Fecha erronea....', 'Advertencia',Mb_Ok+Mb_IconStop); // mensaje de error al usuario edFnac.setfocus; // escribir nuevamente la fecha end; end; **************** El caso es que cuando se introduce un fecha correcta, pasa al control siguiente sin problemas, pero al introducir una fecha erronea, primero me muestra una exepción y luego mi mensaje de fecha erronea. Obiamente quiero que salga mi mensaje para que el usuario corrija y no vea esa exepción. Que creen que este pasando? Saludos y gracias....
__________________
if Vivir = Vivir + Aprender then Aprender = ? Alfredo Borges |
#2
|
||||
|
||||
#3
|
|||
|
|||
Seguramente será porque lo estás ejecutando desde el propio Delphi. Si lo ejecutas desde fuera de Delphi (directamente el exe que creas) no te saldrá el mensajito en inglés.
Aparte, a partir de Delphi 6 (creo) tienes la función TryDateToStr (o algo así) que ya te hace el trabajo del try..except..end; |
#4
|
||||
|
||||
Cita:
// Saludos Para los cyber-arqueólogos del futuro: Este fue el mensaje 1000 |
#5
|
|||
|
|||
Pues continualdo ese hilo... yo me quedaría con el TDateEdit de la Rx que ya la validan por ti
Cita:
|
#6
|
||||
|
||||
Cita:
// Saludos |
#7
|
||||
|
||||
Para llegar al milenario
un millar de mensajes es necesario. Enhorabuena Román. Un Saludo.
__________________
Guía de Estilo de los Foros Cita:
|
#8
|
||||
|
||||
Cita:
// Saludos |
#9
|
|||
|
|||
el problema está en que tu no "atrapas" la excepción, con lo cual tiene que ser delphi quien lo haga, para ello prueba lo siguiente
Código:
procedure TfrmSolicitud.edFnacExit(Sender: TObject); var Hoy : TDateTime; Year, Month, Day: Word; begin try begin Hoy := strtodate(edFnac.text); // cargo Hoy con la cadena del MaskEdit DecodeDate(Hoy, Year, Month, Day); // intento la decodificación Editboxsiguiente.setfocus; // si la fecha es correcta y no ocurre error pasa siguiente control. end; except // Si ocurre un error : begin edFnac.setfocus; // escribir nuevamente la fecha raise exception.create('Fecha erronea....'); // mensaje de error al usuario end; end; |
#10
|
|||
|
|||
Gracias amigos, voy a intentar las distintas propuestas y el hilo sugerido.
Con respecto a las Rx, las tengo pero me genero un error al interntar instalarlas en mi version de delphi (v2.0) y desisti. gracias...
__________________
if Vivir = Vivir + Aprender then Aprender = ? Alfredo Borges |
#11
|
|||
|
|||
Cita:
|
#12
|
||||
|
||||
Cita:
// Saludos |
#13
|
|||
|
|||
En su momento baje 2 archivos: 1 para la version 7 y otro para las versiones anteriores; bueno, en el readme indicaba como instalarlas en cada version de delphi. Mañana les indicaria donde las consegui y el error que me presentó. Aunque la verdad es que quisiera usar una version mas actualizada, pero con el problema del dolar aqui en venezuela no puedo. He tratado de contactar en el mercado local, si fuera posible a alguien que me vendiera una versión que ya no use, pero son muy pocos los programadores con delphi en venezuela, por lo menos en Valencia.
Por otra parte, he escuchado que "delphi se hizo con delphi"; si esto es asi, puede alguien decirme como haceder a una funcion de delphi?. Es decir, me gustaria saber como codificaron la funcion IsLeapYead(). (Esa es una de las razones por la que paso calenteras cuando pruebo codigo propuesto por los colegas en mi version de delphi) Gracias por contestar, y valga por favor la pregunta. Si deciden que mejor añada un hilo, avisenme...
__________________
if Vivir = Vivir + Aprender then Aprender = ? Alfredo Borges |
#14
|
||||
|
||||
Cita:
Cita:
Código:
function EsBisiesto(Año: Integer): Boolean; begin Result := (Año mod 4) = 0 // es múltiplo de 4 and ( (Año mod 100 <> 0) or // pero no de 100 (Año mod 400) = 0 // a menos que también de 400 ); end; Sin embargo, la frase "Delphi está hecho con Delphi" se refiere a que el IDE (ambiente de desarrollo) de Delphi está hecho con Delphi pero hay partes del lenguaje que están programadas con C. // Saludos |
#15
|
||||
|
||||
Mejor puedes utilizar la función IsLeapYear, que viene incorporada en la unidad SysUtils de Delphi.
Código:
procedure TForm1.Button1Click(Sender: TObject); begin if IsleapYear(2004) then ShowMessage('Es bisiesto.'); end;
__________________
Guía de Estilo de los Foros Cita:
|
#16
|
||||
|
||||
Cita:
// Saludos |
#17
|
||||
|
||||
Tienes toda la razón Román, tenía que haber insertado este código:
Código:
{ Date encoding and decoding } function IsLeapYear(Year: Word): Boolean; begin Result := (Year mod 4 = 0) and ((Year mod 100 <> 0) or (Year mod 400 = 0)); end; Un Saludo.
__________________
Guía de Estilo de los Foros Cita:
|
#18
|
||||
|
||||
Cita:
Por cierto, ¿no sería maravilloso que el código de la función EsBisiesto compilara? ¡Porque no compila! // saludos |
#19
|
||||
|
||||
Código:
function EsBisiesto(Agnus: Integer): Boolean; begin Result := ((Agnus mod 4) = 0) // es múltiplo de 4 and ( (Agnus mod 400 = 0) or// a menos que también de 400 (Agnus mod 100 <> 0) // pero no de 100 ); end;
__________________
Guía de Estilo de los Foros Cita:
|
#20
|
||||
|
||||
Cita:
Código PHP:
// Saludos |
|
|
|