A pedido de um membro decidi postar aqui uma função que valida a data.
O usuário pode muito bem postar uma data inválida, por exemplo : 31/06/2013, sendo que nesse mês em que estamos não possui dia 31, e obviamente também corrige outros erros mais simples como mês 13, ou dia 32, etc...
Segue a função:
O usuário pode muito bem postar uma data inválida, por exemplo : 31/06/2013, sendo que nesse mês em que estamos não possui dia 31, e obviamente também corrige outros erros mais simples como mês 13, ou dia 32, etc...
Segue a função:
function ValidaData(data: string): Boolean;
var dia, mes, ano : integer;
DiaCerto : TDate;
begin
if (Length(data)<6) or (Length(data)=7) then
begin
Result:= False;
end
else
begin
if Length(data)=6 then
begin
dia:= StrToInt(Copy(data,1,2));
mes:= StrToInt(Copy(data,3,2));
ano:= StrToInt('20' + (Copy(data,5,2)));
if (mes>12) or (mes<1) then
begin
Result:= false;
end
else
begin
DiaCerto:= EncodeDate(ano , mes, 4); //Ano, mes, dia, é a data escolhida
DiaCerto := StrToInt((Copy(DateToStr(EndOfTheMonth(DiaCerto)), 1,2))); //Pega o ultimo dia do mes data escolhida
if (dia<1) or (dia>DiaCerto) then
begin
Result:= false;
end
else
begin
Result:= true;
end;
end;
end
else
begin
dia:= StrToInt(Copy(data,1,2));
mes:= StrToInt(Copy(data,3,2));
ano:= StrToInt(Copy(data,5,4));
DiaCerto:= EncodeDate(ano , mes, 4); //Ano, mes, dia, é a data escolhida
DiaCerto := StrToInt((Copy(DateToStr(EndOfTheMonth(DiaCerto)), 1,2))); //Pega o ultimo dia do mes data escolhida
if (mes>12) or (mes<1) then
begin
Result:= false;
end
else
begin
if (dia<1) or (dia>DiaCerto) then
begin
Result:= false;
end
else
begin
Result := true;
end;
end;
end;
end;
end;
var dia, mes, ano : integer;
DiaCerto : TDate;
begin
if (Length(data)<6) or (Length(data)=7) then
begin
Result:= False;
end
else
begin
if Length(data)=6 then
begin
dia:= StrToInt(Copy(data,1,2));
mes:= StrToInt(Copy(data,3,2));
ano:= StrToInt('20' + (Copy(data,5,2)));
if (mes>12) or (mes<1) then
begin
Result:= false;
end
else
begin
DiaCerto:= EncodeDate(ano , mes, 4); //Ano, mes, dia, é a data escolhida
DiaCerto := StrToInt((Copy(DateToStr(EndOfTheMonth(DiaCerto)), 1,2))); //Pega o ultimo dia do mes data escolhida
if (dia<1) or (dia>DiaCerto) then
begin
Result:= false;
end
else
begin
Result:= true;
end;
end;
end
else
begin
dia:= StrToInt(Copy(data,1,2));
mes:= StrToInt(Copy(data,3,2));
ano:= StrToInt(Copy(data,5,4));
DiaCerto:= EncodeDate(ano , mes, 4); //Ano, mes, dia, é a data escolhida
DiaCerto := StrToInt((Copy(DateToStr(EndOfTheMonth(DiaCerto)), 1,2))); //Pega o ultimo dia do mes data escolhida
if (mes>12) or (mes<1) then
begin
Result:= false;
end
else
begin
if (dia<1) or (dia>DiaCerto) then
begin
Result:= false;
end
else
begin
Result := true;
end;
end;
end;
end;
end;
Comment