Obrigado Moacir, esta funcionando.
A procedure que voce fez pode-se passar duas datas e comparar a diferença entre elas, achei muito bom. A rotina que eu tenho envolve 3 Functions, calculando qdo for ano Bissexto. Todas em Delphi... Function Bissexto(AYear: Integer): Boolean; begin Result := (AYear mod 4 = 0) and ((AYear mod 100 <> 0) or (AYear mod 400 = 0)); end; Function DiasDoMes(AYear, AMonth: Integer): Integer; const DaysInMonth: array[1..12] of Integer = (31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31); begin Result := DaysInMonth[AMonth]; if (AMonth = 2) and Bissexto(AYear) then Inc(Result); end; Function Idade(DataNasc : TDate) : String; Var Ano1, Mes1, Dia1 : Word; Ano2, Mes2, Dia2 : Word; Ano, Mes, Dia : Word; Idade : String; AuxDia1, AuxDia2 : Integer; begin if DataNasc = 0 then begin Result := '' ; Exit ; end; Idade := ''; DecodeDate(DataNasc, Ano1, Mes1, Dia1); DecodeDate(Date, Ano2, Mes2, Dia2); AuxDia1 := Dia1; AuxDia2 := Dia2; if (Dia1 > Dia2) And ((Mes2 - Mes1) = 1) then begin Dia2 := Dia2 + DiasDoMes(Ano1, Mes1); Mes1 := Mes2; end else if (Dia1 > Dia2) And (Mes1 <> Mes2) then begin Dia2 := Dia2 + DiasDoMes(Ano1, Mes1); end else if (Mes1 = Mes2) And (Dia1 > Dia2) And (Ano1 <> Ano2) then begin Dia2 := Dia2 + DiasDoMes(Ano1, Mes1); Mes2 := Mes2 + 11; Ano1 := Ano1 + 1; end; if (Mes1 > Mes2) And (AuxDia1 <= AuxDia2) then begin Ano1 := Ano1 + 1; Mes2 := Mes2 + 12; end else if (Mes1 > Mes2) And (AuxDia1 > AuxDia2) then begin Ano1 := Ano1 + 1; Mes2 := Mes2 + 11; end; Ano := Ano2 - Ano1; Mes := Mes2 - Mes1; Dia := Dia2 - Dia1; if Ano > 1 then Idade := IntToStr(Ano) + ' a ' // ' Anos' else if Ano = 1 then Idade := IntToStr(Ano) + ' a ' ; // ' Ano'; if Mes > 1 then Idade := Idade + ', ' + IntToStr(Mes) + 'm' // ' Meses ' else if Mes <> 0 then Idade := Idade + ', ' + IntToStr(Mes) + 'm' ; // ' Mês '; If Ano = 0 then Delete(Idade, 1, 1); // NAO COLOQUEI O NUMERO DE DIAS.. { if Dia > 1 then Idade := Idade + ' e ' + IntToStr(Dia) + ' Dias' else if Dia <> 0 then Idade := Idade + ' e ' + IntToStr(Dia) + ' Dia'; } if (Mes = 0) And (Ano = 0) then Delete(Idade, 1, 3); if (Ano1 = Ano2) And (Mes1 = Mes2) And (Dia1 > Dia2) then Idade := '0'; Result := Idade; end; [As partes desta mensagem que não continham texto foram removidas]