Jump to content
Fórum Script Brasil
  • 0

(Resolvido) Obter a Idade através de duas data


Eder

Question

Ola, gostaria de saber como Obter a Idade através de duas data, Data de Hoje em relação a data de aniversário.

Estou usando esta dica, mas ela as vezes se perde....

se eu digitar a data de nascimento 13/11/1970 ela me traz 41 anos esta correto, mas se eu digitar 13/02/1970 ela não me mostra nada...sai em branco o resultado do label.

unit Unit1;

interface

uses

Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,

StdCtrls, Mask, ToolEdit;

type

TForm1 = class(TForm)

Label1: TLabel;

Edit1: TEdit;

Button1: TButton;

procedure Button1Click(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form1: TForm1;

implementation

{$R *.DFM}

function Idade(IdadeNasc : String) : String;

var

AnoAtual,MesAtual,DiaAtual : word;

Ano,Mes,Dia : word;

begin

DecodeDate(StrToDate(IdadeNasc),AnoAtual,MesAtual,DiaAtual);

DecodeDate(Date,Ano,Mes,Dia);

if (Mes <= MesAtual) and (Dia <= DiaAtual) then

begin

Result := IntToStr((Ano-AnoAtual));

end;

if (Mes <= MesAtual) and (Dia > DiaAtual) then

begin

Result := IntToStr((Ano-AnoAtual)-1);

end;

end;

procedure TForm1.Button1Click(Sender: TObject);

begin

Label1.Caption := Idade(Edit1.Text);

end;

end.

Obrigado, Eder

Link to comment
Share on other sites

2 answers to this question

Recommended Posts

  • 0

//-- Primeiro declare a função na cláusula PRIVATE do seu form

private
{private declarations}
  Function DataIdade(DataNascimento : String) : Integer;
public

implementation

//-- Depois coloque o corpo da função após a cláusula implementation

Function TForm1.DataIdade(DataNascimento : String) : Integer;
begin
  try
    strtodate(datanascimento); //-- Verifica se a data é valida
  except
    messagedlg('Data de nascimento inválida!', MTERROR, [MBOK], 0);
    abort;
  end;
  result := Trunc((Date - Strtodate(DataNascimento))/365.25);
end;

//-- Pronto, agora é só atribuir a um controle
//- - tipo:

edit1.text := inttostr(dataidade('12/01/1980'));

abraço

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.



  • Forum Statistics

    • Total Topics
      152.2k
    • Total Posts
      652k
×
×
  • Create New...