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

Ajuda com um erro no codigo


jhonantan_soad

Pergunta

e ai gente beleza?

ow tava fazendo um programa aqui para calcular a idade de uma pessoa

mas só q tem uma coisinha q esta dando errado mas não conssegui descobrir

alguém pode me dar uma ajudinha

obrigado.

if (mes_nas>mes_atual) then
  begin
   idade:=(ano_atual - ano_nas)-1;
  end
else if ((mes_nas = mes_atual) or (mes_nas < mes_atual)) then
  begin
     if (dia_nas < dia_atual) then
       begin
         idade:=((ano_atual - ano_nas)-1);
       end
     else
       idade:=ano_atual - ano_nas;
  end;

Link para o comentário
Compartilhar em outros sites

3 respostass a esta questão

Posts Recomendados

  • 0
ow tava fazendo um programa aqui para calcular a idade de uma pessoa

// Retorna a idade Atual de uma pessoa a partir da data de nascimento

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
     Meses := FloatToStr(StrToFloat(Meses) * -1);

  Delete(Meses, 1, 2);
  if Length(Meses) = 1 then
     Meses := Meses + '0';

  if (Meses <> '0') And (Meses <> '') then
     MesesFloat := Round(((365.6 * StrToInt(Meses)) / 100) / 30.47)
  else
     MesesFloat := 0;

  if MesesFloat <> 12 then
     IdadeReal := Trunc(StrToFloat(AuxIdade)) // + MesesFloat;

  else
     begin
        IdadeInc := Trunc(StrToFloat(AuxIdade));
        Inc(IdadeInc);
        IdadeReal := IdadeInc;
     end;
  Result := IdadeReal;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
   showmessage('A idade é = '+ inttostr(IdadeAtual(strtodate(Edit1.text))));
end;

abraço

Link para o comentário
Compartilhar em outros sites

  • 0

Um exemplo mais simples

function Idade(DataAniv:TDate; DataAtual:TDate): double;
Var Data: TDateTime;
begin
   Data := DataAtual - DataAniv;
   Result := Data;
end;

procedure TForm1.Button1Click(Sender: TObject);
var anos : real;
begin
   anos := Idade(strtodate(Edit1.Text),now);
   anos := anos / 365.6;
   showmessage('A idade é = ' + floattostr(trunc(anos)));
end;

Neste exemplo foi criada uma função para calcular a diferença de dias entre duas datas ( a data de aniversario e a data atual )

com o numero obtido em dias, basta dividir por 365.6 dias do ano, e o resultado será quantos anos foram decorridos

OBS: Isso é só para voce perceber a diferença entre uma lógica e outra

abraço

Link para o comentário
Compartilhar em outros sites

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,1k
    • Posts
      651,8k
×
×
  • Criar Novo...