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

(Resolvido) Calcular Idade


Guest - Alexandre -

Pergunta

Guest - Alexandre -

Como faço para saber quantos anos uma certa pessoa tem, sendo que em um edit tem a data atual que recebe de um time e o outro é a data de nascimento da pessoa. Quero que um outro edit receba a idade da pessoa automaticamente.

Link para o comentário
Compartilhar em outros sites

3 respostass a esta questão

Posts Recomendados

  • 0

Olá,

Segue abaixo a unit que eu criei:

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, Mask;

type
  TForm1 = class(TForm)
    Button1: TButton;
    MaskEdit1: TMaskEdit;
    Edit1: TEdit;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;
  idade_atual: integer;

implementation

{$R *.dfm}

// A função abaixo foi postada pelo usuário sh@dow em um tópico do site ActiveDelphi (http://www.activedelphi.com.br)
// A única alteração que eu fiz foi substituir a variável RESULT (do código original) pela variável 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;
  idade_atual := IdadeReal;
  end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  IdadeAtual(StrToDate(MaskEdit1.Text));
  Form1.Edit1.Text:= IntToStr(idade_atual);
end;

end.

Obs.: eu utilizei um objeto MaskEdit com a seguinte máscara: !99/99/0000;1;_

Abs.

Link para o comentário
Compartilhar em outros sites

  • 0

Boa brother, porem preciso de outras duas informações: 

1- caso o usuario digitar um data de nascimento acima da data atual, tipo 20/10/2070, acredito que a função irá fazer o cálculo devido a data informada estar correta.. E o resultado da idade será "negativa".

 

1- em caso de ser um bebê com menos de 1 Ano... Como posso calcular a idade em dias de vida ? 

 

Obrigado

Link para o comentário
Compartilhar em outros sites

  • 0

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

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