ActiveDelphi - Índice do Fórum ActiveDelphi
.: O site do programador Delphi! :.
 
 FAQFAQ   PesquisarPesquisar   MembrosMembros   GruposGrupos   RegistrarRegistrar 
 PerfilPerfil   Entrar e ver Mensagens ParticularesEntrar e ver Mensagens Particulares   EntrarEntrar 

Erro is not a valid floating point value

 
Novo Tópico   Responder Mensagem    ActiveDelphi - Índice do Fórum -> Delphi
Exibir mensagem anterior :: Exibir próxima mensagem  
Autor Mensagem
dcbfreitas21
Membro Junior
Membro Junior


Registrado: Sábado, 30 de Janeiro de 2010
Mensagens: 323

MensagemEnviada: Ter Fev 21, 2012 8:50 am    Assunto: Erro is not a valid floating point value Responder com Citação

Tenho um formulario de controle de estoque e preciso usar numeros quebrados, porem ao tentar dar entrada ou saida no estoque ele mostra o erro 'is not a valid floating point value', mas o engraçado é que ao tentar dar saida (ou entrada) uma vez ele aceita, porem se tento de novo ele mostra o erro independente de ser numeiro inteiro ou quebrado (23,4). O erro acontece ao sair da edit e os codigos utilizados sao estes:
Código:
if edit2.text = emptystr then
  begin
    edit2.Text := '0';
  end;
if radiobutton1.Checked = true then
  begin
    estoque1 := strtofloat(ADOQuery1.FieldByName('E1').DisplayText) + strtofloat(edit2.Text);
    DBEdit1.Text := FloatToStr(estoque1);
    Edit10.Text := edit2.Text;
    DBEdit9.Text := DBEdit1.Text;
  end;
if radiobutton2.Checked = true then
  begin
    estoque1 := strtofloat(ADOQuery1.FieldByName('E1').DisplayText) - strtofloat(edit2.Text);
    DBEdit1.Text := FloatToStr(estoque1);
    Edit10.Text := edit2.Text;
    DBEdit9.Text := DBEdit1.Text;
  end;
  Edit10.Text := floattostr(strtofloat(edit2.Text) + strtofloat(edit3.Text) + strtofloat(edit4.Text) + strtofloat(edit5.Text) + strtofloat(edit6.Text) + strtofloat(edit7.Text) + strtofloat(edit8.Text) + strtofloat(edit9.Text));
  DBEdit9.Text := floattostr( strtofloat(DBEdit1.Text) + strtofloat(DBEdit2.Text) + strtofloat(DBEdit3.Text) + strtofloat(DBEdit4.Text) + strtofloat(DBEdit5.Text) + strtofloat(DBEdit6.Text) + strtofloat(DBEdit7.Text) + strtofloat(DBEdit8.Text));
  Total := (strtofloat(DBEdit9.Text) * (ADOQuery1.FieldByName('valor').AsCurrency));
  DBEdit10.Text := FormatFloat('##,###,##0.00',total);
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
marcosalles
Moderador
Moderador


Registrado: Quarta-Feira, 26 de Março de 2008
Mensagens: 1695
Localização: Muriaé Mg

MensagemEnviada: Ter Fev 21, 2012 9:24 am    Assunto: Responder com Citação

estoque1 := strtofloat(ADOQuery1.FieldByName('E1').DisplayText) + strtofloat(edit2.Text);

Olha so , o fieldbyname disponibiliza vários formatos para o campo

Asstring , Asinteger , Asfloat , AsExtended ,Asdatetime etc.....

se o campo é inteiro utilise o AsInteger

não precisa ficar convertendo

var
INTEIRO:Integer;
Inteiro:=strtoint(ADOQuery1.FieldByName('E1').ASSTRING)

basta utilizar ***Sem fazer a Conversão
Inteiro:=ADOQuery1.FieldByName('E1').ASInteger

Troque o ADOQuery1.FieldByName('E1').DisplayText) pelo Tipo
de dado que voce espera na Operação e que esteja disponivel no
campo ... Faça estas modificaçãoes , se não resolver pelo menos é o
modo correto e evita Transformaçoes desnecessárias alem de dificultar a
leitura do código
_________________
http://marcosalles.wordpress.com

Desenvolvo FreeLancer e presto Consultoria
Orientação Online DataSnap DbX ClientDataSet
POO , Padrões de Projeto e dúvidas de Delphi em
Geral
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular Visitar a homepage do Usuário
dcbfreitas21
Membro Junior
Membro Junior


Registrado: Sábado, 30 de Janeiro de 2010
Mensagens: 323

MensagemEnviada: Ter Fev 21, 2012 2:45 pm    Assunto: Responder com Citação

marcosalles escreveu:
estoque1 := strtofloat(ADOQuery1.FieldByName('E1').DisplayText) + strtofloat(edit2.Text);

Olha so , o fieldbyname disponibiliza vários formatos para o campo

Asstring , Asinteger , Asfloat , AsExtended ,Asdatetime etc.....

se o campo é inteiro utilise o AsInteger

não precisa ficar convertendo

var
INTEIRO:Integer;
Inteiro:=strtoint(ADOQuery1.FieldByName('E1').ASSTRING)

basta utilizar ***Sem fazer a Conversão
Inteiro:=ADOQuery1.FieldByName('E1').ASInteger

Troque o ADOQuery1.FieldByName('E1').DisplayText) pelo Tipo
de dado que voce espera na Operação e que esteja disponivel no
campo ... Faça estas modificaçãoes , se não resolver pelo menos é o
modo correto e evita Transformaçoes desnecessárias alem de dificultar a
leitura do código

Na verdade meu campo E1 é moeda, por ser numero quebrados, tentei alterar o codigo asstring por asfloat e ele nao executa mostrando o erro 'StrToFloat' that can be called with these arguments'.
Tb tentei .value mas aparece o mesmo erro
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
marcosalles
Moderador
Moderador


Registrado: Quarta-Feira, 26 de Março de 2008
Mensagens: 1695
Localização: Muriaé Mg

MensagemEnviada: Ter Fev 21, 2012 3:21 pm    Assunto: Responder com Citação

Citação:
Na verdade meu campo E1 é moeda, por ser numero quebrados, tentei alterar o codigo asstring por asfloat e ele nao executa mostrando o erro 'StrToFloat' that can be called with these arguments'.
Tb tentei .value mas aparece o mesmo erro


O argumento não é um Real ???? voce tem que fazer o typcast correto

coloque o codigo onde o compilador esta reclamando

StrToFloat(Aqui tem que ser um Real) e quem irá receber tem que ser String
_________________
http://marcosalles.wordpress.com

Desenvolvo FreeLancer e presto Consultoria
Orientação Online DataSnap DbX ClientDataSet
POO , Padrões de Projeto e dúvidas de Delphi em
Geral
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular Visitar a homepage do Usuário
dcbfreitas21
Membro Junior
Membro Junior


Registrado: Sábado, 30 de Janeiro de 2010
Mensagens: 323

MensagemEnviada: Sáb Fev 25, 2012 7:19 am    Assunto: Responder com Citação

marcosalles escreveu:
Citação:
Na verdade meu campo E1 é moeda, por ser numero quebrados, tentei alterar o codigo asstring por asfloat e ele nao executa mostrando o erro 'StrToFloat' that can be called with these arguments'.
Tb tentei .value mas aparece o mesmo erro


O argumento não é um Real ???? voce tem que fazer o typcast correto

coloque o codigo onde o compilador esta reclamando

StrToFloat(Aqui tem que ser um Real) e quem irá receber tem que ser String

Mas o float nao serve para o real? Se nao, qual seria o correto?
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
marcosalles
Moderador
Moderador


Registrado: Quarta-Feira, 26 de Março de 2008
Mensagens: 1695
Localização: Muriaé Mg

MensagemEnviada: Sáb Fev 25, 2012 7:48 am    Assunto: Responder com Citação

Desculpe eu escrevi errado

Citação:
StrToFloat(Aqui tem que ser um Real) e quem irá receber tem que ser String


corrigindo

Citação:
StrToFloat(Aqui tem que ser um String) e quem irá receber tem que ser Real



Mas eu não quis dizer somente isto...

O que estou querndo dizer é que não precisa utilizar Conversão ,
pois se o campo ja é um inteiro ou real basta utlizar o asinteger ou
asfloat na propriedade do Tfield

Voce esta fazendo assim

Citação:
estoque1 := strtofloat(ADOQuery1.FieldByName('E1').DisplayText) + strtofloat(edit2.Text);


ps) usar o DisplayText não é muito usual o usual é utilizar o asstring

O que quero dizer é que se o campo E1 ja for um Inteiro ou Um Real
basta fazer assim

Código:
estoque1 := ADOQuery1.FieldByName('E1').asinteger + strtofloat(edit2.Text);

ou

estoque1 := ADOQuery1.FieldByName('E1').asFloat + strtofloat(edit2.Text);



Isto é válido é claro que se o estoque1 for definido como Real
_________________
http://marcosalles.wordpress.com

Desenvolvo FreeLancer e presto Consultoria
Orientação Online DataSnap DbX ClientDataSet
POO , Padrões de Projeto e dúvidas de Delphi em
Geral
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular Visitar a homepage do Usuário
dcbfreitas21
Membro Junior
Membro Junior


Registrado: Sábado, 30 de Janeiro de 2010
Mensagens: 323

MensagemEnviada: Seg Fev 27, 2012 8:15 am    Assunto: Responder com Citação

marcosalles escreveu:
Desculpe eu escrevi errado

Citação:
StrToFloat(Aqui tem que ser um Real) e quem irá receber tem que ser String


corrigindo

Citação:
StrToFloat(Aqui tem que ser um String) e quem irá receber tem que ser Real



Mas eu não quis dizer somente isto...

O que estou querndo dizer é que não precisa utilizar Conversão ,
pois se o campo ja é um inteiro ou real basta utlizar o asinteger ou
asfloat na propriedade do Tfield

Voce esta fazendo assim

Citação:
estoque1 := strtofloat(ADOQuery1.FieldByName('E1').DisplayText) + strtofloat(edit2.Text);


ps) usar o DisplayText não é muito usual o usual é utilizar o asstring

O que quero dizer é que se o campo E1 ja for um Inteiro ou Um Real
basta fazer assim

Código:
estoque1 := ADOQuery1.FieldByName('E1').asinteger + strtofloat(edit2.Text);

ou

estoque1 := ADOQuery1.FieldByName('E1').asFloat + strtofloat(edit2.Text);



Isto é válido é claro que se o estoque1 for definido como Real

A variavel estoque1 esta definida como real, deixei os codigos desta forma:
Código:
if edit2.text = emptystr then
  begin
    edit2.Text := '0';
  end;
if radiobutton1.Checked = true then
  begin
    estoque1 := ADOQuery1.FieldByName('E1').asFloat + strtofloat(edit2.Text);
    DBEdit1.Text := FloatToStr(estoque1);
    Edit10.Text := edit2.Text;
    DBEdit9.Text := DBEdit1.Text;
  end;
if radiobutton2.Checked = true then
  begin
    estoque1 := ADOQuery1.FieldByName('E1').asFloat + strtofloat(edit2.Text);
    DBEdit1.Text := FloatToStr(estoque1);
    Edit10.Text := edit2.Text;
    DBEdit9.Text := DBEdit1.Text;
  end;
  Edit10.Text := floattostr(strtofloat(edit2.Text) + strtofloat(edit3.Text) + strtofloat(edit4.Text) + strtofloat(edit5.Text) + strtofloat(edit6.Text) + strtofloat(edit7.Text) + strtofloat(edit8.Text) + strtofloat(edit9.Text));
  DBEdit9.Text := floattostr( strtofloat(DBEdit1.Text) + strtofloat(DBEdit2.Text) + strtofloat(DBEdit3.Text) + strtofloat(DBEdit4.Text) + strtofloat(DBEdit5.Text) + strtofloat(DBEdit6.Text) + strtofloat(DBEdit7.Text) + strtofloat(DBEdit8.Text));
  Total := (strtofloat(DBEdit9.Text) * (ADOQuery1.FieldByName('valor').AsCurrency));
  DBEdit10.Text := FormatFloat('##,###,##0.00',total);

Porem ele continua da mesma forma na primeira vez que coloca valores ele aceita na segunda vez ele da erro.
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
marcosalles
Moderador
Moderador


Registrado: Quarta-Feira, 26 de Março de 2008
Mensagens: 1695
Localização: Muriaé Mg

MensagemEnviada: Seg Fev 27, 2012 11:23 am    Assunto: Responder com Citação

Citação:
Porem ele continua da mesma forma na primeira vez que coloca valores ele aceita na segunda vez ele da erro.


é porque na segunda vez , esses edits que voce esta utilizando , devem
estar formatados com caracterers qua não são passiveis de conversão

Pode ter certeza que o Text deste Edits estão "polidos" .
Verifique isto
_________________
http://marcosalles.wordpress.com

Desenvolvo FreeLancer e presto Consultoria
Orientação Online DataSnap DbX ClientDataSet
POO , Padrões de Projeto e dúvidas de Delphi em
Geral
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular Visitar a homepage do Usuário
dcbfreitas21
Membro Junior
Membro Junior


Registrado: Sábado, 30 de Janeiro de 2010
Mensagens: 323

MensagemEnviada: Qua Fev 29, 2012 9:37 am    Assunto: Responder com Citação

marcosalles escreveu:
Citação:
Porem ele continua da mesma forma na primeira vez que coloca valores ele aceita na segunda vez ele da erro.


é porque na segunda vez , esses edits que voce esta utilizando , devem
estar formatados com caracterers qua não são passiveis de conversão

Pode ter certeza que o Text deste Edits estão "polidos" .
Verifique isto

Marcosalles como faço para verificar isto?
Desculpe se a pergunta for idiota, mas ainda sou iniciante em delphi
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
marcosalles
Moderador
Moderador


Registrado: Quarta-Feira, 26 de Março de 2008
Mensagens: 1695
Localização: Muriaé Mg

MensagemEnviada: Qua Fev 29, 2012 11:29 am    Assunto: Responder com Citação

Visualmente voce pode perceber se esses edits contem somente numeros
ou estão poluidos com alguns literais o que da erro de conversão
_________________
http://marcosalles.wordpress.com

Desenvolvo FreeLancer e presto Consultoria
Orientação Online DataSnap DbX ClientDataSet
POO , Padrões de Projeto e dúvidas de Delphi em
Geral
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular Visitar a homepage do Usuário
Mostrar os tópicos anteriores:   
Novo Tópico   Responder Mensagem    ActiveDelphi - Índice do Fórum -> Delphi Todos os horários são GMT - 3 Horas
Página 1 de 1

 
Ir para:  
Enviar Mensagens Novas: Proibido.
Responder Tópicos Proibido
Editar Mensagens: Proibido.
Excluir Mensagens: Proibido.
Votar em Enquetes: Proibido.


Powered by phpBB © 2001, 2005 phpBB Group
Traduzido por: Suporte phpBB