DAIA 0 Denunciar post Postado Setembro 2, 2008 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
shini 318 Denunciar post Postado Setembro 2, 2008 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
DAIA 0 Denunciar post Postado Setembro 2, 2008 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
marcio.theis 3 Denunciar post Postado Setembro 2, 2008 http://forum.imasters.com.br/index.php?showtopic=198327 Compartilhar este post Link para o post Compartilhar em outros sites
DAIA 0 Denunciar post Postado Setembro 3, 2008 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
DAIA 0 Denunciar post Postado Setembro 3, 2008 http://forum.imasters.com.br/index.php?showtopic=198327 Muito obrigada, esta funcionou direitinho! Compartilhar este post Link para o post Compartilhar em outros sites
marcio.theis 3 Denunciar post Postado Setembro 3, 2008 beleza... http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif Compartilhar este post Link para o post Compartilhar em outros sites