Buscar

Calculo da idade (aprimorado)

Código

//Essa dica é um demostrativo de como se calcular a idade de uma pessoa em anos, meses e/ou dias

//1º Declare na uses a unit DateUtils
//2º Insira um Button e um Maskedit no Form
//3º Na propriedade EditMask do Maskedit insira o formato Date e modifique
//no campo Input Mask esse formato para 4 dígitos no ano e dê OK
//4º No evento OnClick do Button insira o código e execute

procedure TForm1.Button1Click(Sender: TObject);
var
Ano, Mes: Integer;
Total_dias: Real;
begin
    //Descobrir a idade somente em anos, meses ou dias...

    ShowMessage(IntToStr(YearsBetween(Date, StrToDate(MaskEdit1.Text))) + ' anos');
    ShowMessage(IntToStr(MonthsBetween(Date, StrToDate(MaskEdit1.Text))) + ' meses');
    ShowMessage(IntToStr(DaysBetween(Date, StrToDate(MaskEdit1.Text))) + ' dias');

    //ou

    //Descobrir a idade em anos, meses e dias, complicando um pouco mais...

    Total_dias := DaysBetween(Date, StrToDate(MaskEdit1.Text));
    Ano := StrToInt(Copy(MaskEdit1.Text, 7, 4));
    while Total_dias > 365 do
    begin
        Total_dias := Total_dias - DaysInAYear(Ano);
        Ano := Ano + 1;
    end;
    Mes := StrToInt(Copy(MaskEdit1.Text, 4, 2));
    while Total_dias > 28 do
    begin
        if Total_dias >= DaysInAMonth(Ano, Mes) then
        begin
            Total_dias := Total_dias - DaysInAMonth(Ano, Mes);
            Mes := Mes + 1;
        end
        else
            break;
    end;
    Ano := Ano - StrToInt(Copy(MaskEdit1.Text, 7, 4));
    Mes := Mes - StrToInt(Copy(MaskEdit1.Text, 4, 2));
    if StrToDate(MaskEdit1.Text) <= Date then
        ShowMessage(IntToStr(Ano) + ' anos, ' + IntToStr(Mes) + ' meses e ' + FloatToStr(Total_dias) + ' dias')
    else
        ShowMessage('Impossível realizar cálculo! Data > que a data atual!');
end;

Publicidade

Vote na dica




Quantidade de votos: 2 votos
Aceitação: 20%


Detalhes da dica

Categoria: Object pascal
Adicionada dia: 12/08/08
Por: Davi Winter
Visualizada: 14459 vezes

Planeta Delphi - Tudo sobre programação Delphi Planeta Delphi - www.planetadelphi.com.br - Todos os direitos reservados | Copyright 2001-2009