Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Como soluciono esto? (https://www.clubdelphi.com/foros/showthread.php?t=16328)

jam888 24-11-2004 03:36:10

Como soluciono esto?
 
Que tal foro, tanto tiempo he vuelto inundado de dudas la primera es saber validar una fecha
Por Ejemplo: tengo en una variable de tipo string fecha:=10/10/2004 como hago para validar esto, es decir
que no cargue mes 13, dia 32, y año 2006, esto me sucede con los maskedit dejan cargar cualquier
dato.Tambien me gustaria Validar que si el mes es febrero el campo dia no supere el nº28,
he tratado luego de cargar la varible hacer una validacion de este tipo
if (strtodate(fecha))then
begin
variable:=fecha
end
else
begin
showmessage('fecha incorrecta');
end;

pero me da error como que no puede hacer eso, tampoco puedo definir la varible de tipo date ¿que pasa?
Como soluciono esto?

roman 24-11-2004 03:59:43

StrToDate lanzará una excepción en caso de que la cadena no represente una fecha válida así que más bien podrías manejar la excepción para determinar si es o no correcta. Por ejemplo, esta función

Código Delphi [-]
function IsValidDate(S: String): Boolean;
var
  Date: TDate;

begin
  Result := true;

  try
    Date := StrToDate(S);
  except
    on EConvertError do
      Result := false;
  end;
end;

Sin embargo toma en cuenta que una misma cadena dada puede ser o no una fecha válida dependiendo de la configuración regional del sistema; específicamente de las variables globales DateSeparator y ShortDateFormat.

// Saludos

LordSigma 24-11-2004 13:18:55

Lo que dijo roman es excelente, yo ademas le agregaria lo siguiente :

Código Delphi [-]
function IsValidDate(S:String): Boolean;
var Date: TDate;
     // Donde guardo la configuracion original del sistema.
     ShortDateFormatOriginal: String; 
 
begin
 
  Result := true;
 
  try
 
    // Guardo la configuracion original del sistema.
    ShortDateFormatOriginal := ShortDateFormat;
 
    // Configuro el formato de fecha segun lo quiero validar.
    ShortDateFormat := 'mm/dd/yyyy' 
    // O la configuracion de dia/mes/año que utilizas.
 
    try
      Date := StrToDate(S);
    except
      on EConvertErrordo
        Result := false;
    end;
 
  finally
 
    // Reestablezco la configuracion original del sistema.
    ShortDateFormat := ShortDateFormatOriginal;
 
  end;
 
end;

Perdon pero no se formatear el texto como hizo roman para que aparezca como codigo Delphi, si alguien me puede dar una mano ... :rolleyes:

roman 24-11-2004 16:33:02

Cita:

Empezado por LordSigma
Perdon pero no se formatear el texto como hizo roman para que aparezca como codigo Delphi, si alguien me puede dar una mano

Muy sencillo. Utiliza la etiqueta [delphi] que te reserva las indentaciones y te colorea automáticamente el texto. Al principio de cada foro hay un aviso que habla acerca de ello. Ahora me tomé la libertad de editar tu mensaje para colocar las etiquetas. Entra a editarlo para que veas cómo se usan.

// Saludos


La franja horaria es GMT +2. Ahora son las 06:07:58.

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