Data de aniversário

14/03/2006

0

Olá amigos,

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

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

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


Rodrigorpb

Rodrigorpb

Responder

Posts

14/03/2006

Motta

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.


Responder

14/03/2006

Rodrigorpb

Valeu Motta,

Vou dar uma olhada,

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

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


Rodrigo.


Responder

14/03/2006

Rodrigorpb

[b:b87f722bb8]Que tipo de variável é TDecodedDate?[/b:b87f722bb8]

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.


Responder

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar