Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

DAIA

[Resolvido] idade

Recommended Posts

Olá!

Estou querendo calcular a idade de uma pessoa. Assim uso um MaskEdit que se chama mskDtNasc, onde informo a data de nascimento.

Só q está dando um erro nessa linha aqui:

AuxIdade := Format('%0.2f', [DateToStr(now) - strtoDate(Nasc) / StrToFloat(365.6)]);

[Error] UPrincipal.pas(91): There is no overloaded version of 'StrToFloat' that can be called with these arguments// este é o erro.

 

Alguém pode me ajudar!!

 

procedure TFAudioLab.edtIdadeEnter(Sender: TObject);

Var AuxIdade, Meses : String;

MesesFloat,result : Real;

IdadeInc, IdadeReal : Integer;

Nasc : string;

 

begin

Try

mskDtNasc.Text := DateToStr( StrToDate( mskDtNasc.Text ) ) ;

except

ShowMessage( 'Data inválida!' ) ;

mskDtNasc.SetFocus ;

end ;

 

Nasc := mskDtNasc.Text;

showmessage(DateToStr(now));

ShowMessage(mskDtNasc.Text );

AuxIdade := Format('%0.2f', [DateToStr(now) - strtoDate(Nasc) / StrToFloat(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;

Compartilhar este post


Link para o post
Compartilhar em outros sites

lol

AuxIdade := Format('%0.2f', [DateToStr(now) - strtoDate(Nasc) / StrToFloat(365.6)]);

 

Var AuxIdade, Meses : String;

 

Qual o motivo de AuxIdade ser string? não poderia ser real?, fica ate mais facil de realizar o calculo, depois do calculo você transforma o resultado em string e joga no maskedit.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Obrigada por responder...

eu tinha feito assim:

AuxIdade := Format('%0.2f', [DateToStr(now) - strtoDate(Nasc) / 365.6]);

mas daí dá esse erro:

[Error] UPrincipal.pas(91): Incompatible types: 'String' and 'Extended'

 

Não sei qual a forma correta de informar os dados... se puder me ajudar...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá!

Coloquei AuxIdade como real... e como fica a linha??? AuxIdade := Format('%0.2f', [DateToStr(now) - strtoDate(Nasc) / StrToFloat(365.6)]);

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.