Array
(
)

Data de aniversário

Rodrigorpb
   - 14 mar 2006

Olá amigos,

Gostaria de saber qual é o problema com este código para calcular a idade da pessoa a partir da data de nascimento.

#Código


var
nascimento : TDate;
nascimento := DBDateEdit9.Date;
DBEdit03.Text := formatfloat(´#,0´, ( (date - nascimento) / 365));

Alguém teria um código mais eficaz.
Alguém poderia me ajudar,
Vlw,
Rodrigo.


Motta
   - 14 mar 2006

Veja :

http://forum.devmedia.com.br/viewtopic.php?t=28229&highlight=function+idade&sid=f7c394753ddc77e38024275e10a642ce

Existem anos bissestos e meses com <> nº de dias, por isto / 365 fica dá errado ´as vezes , talvez / 365,25 fique melhor, mas o melhor é uma function.


Rodrigorpb
   - 14 mar 2006

Valeu Motta,

Vou dar uma olhada,

Mas estava vendo o exemplo de baixo e me parece que ele também caulcula certo.

#Código


campocalculavel.ascurrency:=StrtoFloat(FormatDateTime(´yyyy´,Date)-
StrtoFloat(FormatDateTime(´yyyy´,DtaNasciment);


Rodrigo.


Rodrigorpb
   - 14 mar 2006

Que tipo de variável é TDecodedDate?

#Código

function IdadeEmAnos(PNasc, PDate:TDateTime): integer;
var
dNasc, dDate: TDecodedDate;
Idade: integer;
begin
{Inicializa com Idade Impossível ...}
Idade := -1;
if PNasc > PDate then
begin
result := 0;
Exit;
end;
DecodeDate(PNasc, dNasc.ano, dNasc.mes, dNasc.dia);
DecodeDate(PDate, dDate.ano, dDate.mes, dDate.dia);
Idade := dDate.ano - dNasc.ano;
if ((dNasc.mes * 100) + dNasc.dia) > ((dDate.mes * 100) + dDate.dia) then
inc(Idade, -1);
result := Idade;
end;



Rodrigo.