Calcular idade (em anos completos) no Delphi

A função abaixo calcula o número de anos completos entre duas datas. É ideal para calcular idades de pessoas, por exemplo.

function CalcAnos(const Data1, Data2: TDateTime): integer;
var
  D1, M1, A1,
  D2, M2, A2: Word;
begin
  DecodeDate(Data1, A1, M1, D1);
  DecodeDate(Data2, A2, M2, D2);

  Result := A2 - A1;

  if (M1 > M2) or ((M1 = M2) and (D1 > D2)) then
    Dec(Result);
end;

Exemplo de uso:

  • Coloque um Edit (TEdit) para digitar a data de nascimento.
  • Coloque um botão (TButton).
  • Coloque o código a seguir no evento OnClick do botão:
var
  DataNasc: TDateTime;
begin
  DataNasc := StrToDate(Edit1.Text);
  ShowMessage(IntToStr(CalcAnos(DataNasc, Date)) + ' anos');
end;