Fórum Erro no Locate de números decimais. #391238

25/11/2010

0

Bom dias amigos,   Estou precisando localizar em uma tabela com valores inteiros o valor de um Edit com valores fracionarios (89,34), estou tentando converter o valor do Edit em inteiro utilizando a função Trunc mas o resultado     Vejam a fórmula que montei.   Function TFCALCULO.LocalizarAngulo:Integer;
var
V, W :Double;
begin
  V:=(StrToFloat(EditAngulo.Text));
  W:=Trunc(V);
  Edit10.Text:=FloatToStr(W);
  if TabAnguloposte.locate('angulo',EditAngulo.text,[]) then
  begin   Edit11.Text:=TabAnguloposte.FieldByName('Pesoposte').AsFloat;
end;
end;     Se algum de vocês puderem me ajudar, desde já eu agradeço.   Atenciosamente.   Valdir Lima
Valdir Lima

Valdir Lima

Responder

Posts

25/11/2010

Leonardo Xavier

qual mensagem de erro ;e apresentada para você no momento da pesquiza?
Responder

Gostei + 0

25/11/2010

Valdir Lima

Olá Leonardo,   Desculpa e não ter colocado, o resultado vem em branco, ou seja, o edit que traria o valor inteiro (truncado) retorna vazio.   Abraço.     Valdir
Responder

Gostei + 0

25/11/2010

Leonardo Xavier

Bom dias amigos,   Estou precisando localizar em uma tabela com valores inteiros o valor de um Edit com valores fracionarios (89,34), estou tentando converter o valor do Edit em inteiro utilizando a função Trunc mas o resultado     Vejam a fórmula que montei.   Function TFCALCULO.LocalizarAngulo:Integer;
var
V, W :Double;
begin
  V:=(StrToFloat(EditAngulo.Text));
  W:=Trunc(V);
  Edit10.Text:=FloatToStr(W);
  if TabAnguloposte.locate('angulo',EditAngulo.text,[]) then
  begin   Edit11.Text:=TabAnguloposte.FieldByName('Pesoposte').AsFloat;
end;
end;     Se algum de vocês puderem me ajudar, desde já eu agradeço.   Atenciosamente.   Valdir Lima

Certo e qual seria o valor apresentado no edit10.text ? Com o valor informado de 89,34?
Responder

Gostei + 0

25/11/2010

Valdir Lima

Vamos lá,   Na tabela onde vou fazer o locate existe somente números inteiro tipo 81, 47, 25, 79, etc., o valor 89,34 deveria retornar 89 que é o arredondamento para baixo e se o valor fosse 89,73 deveria retornar 90 que é o arredontamento para cima. Talvéz nem seje a função Trunc a ser utilizada mas se esta função for a mais fácil o valor para sair no Edit10.Text é 89, considerando 89,34 como valor informado, ou seja, retornar só o valor inteiro.     Abraço.     Valdir
Responder

Gostei + 0

25/11/2010

Leonardo Xavier

Ja tentou fazer assim?

Function TFCALCULO.LocalizarAngulo:Integer;
var
V, W :Double;
begin
  V:=(StrToFloat(EditAngulo.Text));
  W:=Trunc(V);
  Edit10.Text:=FloatToStr(W);
  if TabAnguloposte.locate('angulo',EDIT10.TEXT,[loCaseInsensitive]) then
  begin
  Edit11.Text:=TabAnguloposte.FieldByName('Pesoposte').AsFloat; 
end;
end;

Responder

Gostei + 0

25/11/2010

Valdir Lima

Leonardo,   Os sistema continua retornando valores vazios no Edit.Text10, não está convertendo o valor 89,34 para inteiro e eu acho que ele não consegue localizar um valor inteiro na tabela se o valor do Edit10 não estiver convertido.   Te mais,   Valdir
Responder

Gostei + 0

25/11/2010

Leonardo Xavier

Leonardo,   Os sistema continua retornando valores vazios no Edit.Text10, não está convertendo o valor 89,34 para inteiro e eu acho que ele não consegue localizar um valor inteiro na tabela se o valor do Edit10 não estiver convertido.   Te mais,   Valdir


Valdir ja tentou utilizar o Round?

http://www.delphibasics.co.uk/RTL.asp?Name=Round&ExpandCode1=Yes
Responder

Gostei + 0

25/11/2010

Wilson Junior

Utilize assim:
var
  V, W :Double;
begin
  V := StrToFloat( EditAngulo.Text );
  W := Round( V );
  Edit10.Text := FloatToStr( W );
  { ... continue o seu código }


Espero ter colaborado.
Responder

Gostei + 0

25/11/2010

Valdir Lima

Leonardo,   Eu tentei utilizar o Round Assim mas o resultado continua em branco.     Function TFCALCULO.LocalizarAngulo:Integer;
var
V, W :Double;
begin
  V:=(StrToFloat(EditAngulo.Text));
  W:=Round(V);
    Edit10.Text:=FloatToStr(W);
  if TabAnguloposte.locate('angulo',EDIT10.TEXT,[]) then
  begin
  Edit11.Text:=TabAnguloposte.FieldByName('Pesoposte').AsString;
end;
end;     Tá difícil     Valdir  
Responder

Gostei + 0

25/11/2010

Valdir Lima

Olá Wilson,   Fiz o código com você sugeriu mas também retorna o valor em branco, o que pode estar errado?   Function TFCALCULO.LocalizarAngulo:Integer;
var
V, W :Double;
begin
  V:=StrToFloat(EditAngulo.Text);
  W:=Round(V);
  Edit10.Text:=FloatToStr(W);
  if TabAnguloposte.locate('angulo',EDIT10.TEXT,[]) then
  begin
  Edit11.Text:=TabAnguloposte.FieldByName('pesoposte).AsString;
end;
end;     O sistema não está arredondando.   Att.   Valdir  
Responder

Gostei + 0

25/11/2010

Wilson Junior

Faça isto e veja qual o valor está retornando.
var
  V, W :Double;
begin
  V := StrToFloat( EditAngulo.Text );
  ShowMessage( FloatToStr(V) );
  W := Round( V );
  Edit10.Text := FloatToStr( W );
  { ... continue o seu código }


Verifique se está com ponto (89.34) ou vírgula (89,34) o seu EditAngulo, pois deve estar com ",".
Veja também se você não tem nenhum evento no Edit10 ou se mais algum lugar atribui dados ao Edit10.

Espero ter colaborado.
Responder

Gostei + 0

25/11/2010

Valdir Lima

Meus agradecimentos ao Leonardo e Wilson pela força,   conforme as orientações de vocês resolvi o problema, o último estava na pontuação do valor, mas já está resolvido.   Abraço     Valdir Lima
Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar