Ir para conteúdo
Fórum Script Brasil
  • 0

Calculando Idade...(Resolvido)


DELPHI-Man32

Pergunta

4 respostass a esta questão

Posts Recomendados

  • 0

Olá,

Olha esta função (Calcula a Idade Atual)

function IdadeAtual(Nasc : TDate): Integer;
Var AuxIdade, Meses : String;
  MesesFloat : Real;
  IdadeInc, IdadeReal : Integer;
begin
  AuxIdade := Format('%0.2f', [(Date - Nasc) / 365.6]);
  Meses := FloatToStr(Frac(StrToFloat(AuxIdade)));
  if AuxIdade = '0' then
  begin
  Result := 0;
  Exit;
  end;
  if Meses[1] = '-' then
  begin
  Meses := FloatToStr(StrToFloat(Meses) * -1);
  end;
  Delete(Meses, 1, 2);
  if Length(Meses) = 1 then
  begin
  Meses := Meses + '0';
  end;
  if (Meses <> '0') And (Meses <> '') then
  begin
  MesesFloat := Round(((365.6 * StrToInt(Meses)) / 100) / 30.47)
  end
  else
  begin
  MesesFloat := 0;
  end;
  if MesesFloat <> 12 then
  begin
  IdadeReal := Trunc(StrToFloat(AuxIdade)); // + MesesFloat;
  end
  else
  begin
  IdadeInc := Trunc(StrToFloat(AuxIdade));
  Inc(IdadeInc);
  IdadeReal := IdadeInc;
  end;
  Result := IdadeReal;
end;

Espero que ajude.

Abs.

Kiko

Link para o comentário
Compartilhar em outros sites

  • 0

Usei essa e funciona certinho:

Declare uma variavel IDADE_Atual : Integer

function IdadeAtual(Nasc : TDate): Integer;
Var AuxIdade, Meses : String;
    MesesFloat : Real;
    IdadeInc, IdadeReal : Integer;
begin
 AuxIdade := Format('%0.2f', [(Date - Nasc) / 365.6]);
 Meses := FloatToStr(Frac(StrToFloat(AuxIdade)));
 if AuxIdade = '0' then
 begin
   Result := 0;
   Exit;
 end;
 if Meses[1] = '-' then
 begin
   Meses := FloatToStr(StrToFloat(Meses) * -1);
 end;
 Delete(Meses, 1, 2);
 if Length(Meses) = 1 then
 begin
   Meses := Meses + '0';
 end;
 if (Meses <> '0') And (Meses <> '') then
 begin
   MesesFloat := Round(((365.6 * StrToInt(Meses)) / 100) / 30.47)
 end
 else
 begin
   MesesFloat := 0;
 end;
 if MesesFloat <> 12 then
 begin
   IdadeReal := Trunc(StrToFloat(AuxIdade)); // + MesesFloat;
 end
 else
 begin
   IdadeInc := Trunc(StrToFloat(AuxIdade));
   Inc(IdadeInc);
   IdadeReal := IdadeInc;
 end;
 idade_atual := IdadeReal;
end;
Chamei ela desta forma:
procedure TFrmMembros.EdtDataNascExit(Sender: TObject);
Var Idade : String;
begin
  Idade := (copy(EdtDataNasc.Text,1,2)+'/'+copy(EdtDataNasc.Text,3,2)+'/'+copy(EdtDataNasc.Text,5,4));
  IdadeAtual(StrToDate(Idade));
  EdtIdade.Text:= IntToStr(idade_atual);
end;

falou

Link para o comentário
Compartilhar em outros sites

  • 0

valeu pessoal, no mesmo dia que postei a duvida, peguei esta função ai num site e implmentei para calcular a idade, usando uma var do tipo integer(Idade_Hoje), com a função dentro de uma dll, e deu certo!! falows!!

abraços a todos!!

Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novos posts.


  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,2k
×
×
  • Criar Novo...