Erro no Locate de números decimais.
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
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
Curtidas 0
Respostas
Leonardo Xavier
25/11/2010
qual mensagem de erro ;e apresentada para você no momento da pesquiza?
GOSTEI 0
Valdir Lima
25/11/2010
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
GOSTEI 0
Leonardo Xavier
25/11/2010
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
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?
GOSTEI 0
Valdir Lima
25/11/2010
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
GOSTEI 0
Leonardo Xavier
25/11/2010
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;
GOSTEI 0
Valdir Lima
25/11/2010
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
GOSTEI 0
Leonardo Xavier
25/11/2010
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
GOSTEI 0
Wilson Junior
25/11/2010
Utilize assim:
Espero ter colaborado.
var
V, W :Double;
begin
V := StrToFloat( EditAngulo.Text );
W := Round( V );
Edit10.Text := FloatToStr( W );
{ ... continue o seu código }
Espero ter colaborado.
GOSTEI 0
Valdir Lima
25/11/2010
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
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
GOSTEI 0
Valdir Lima
25/11/2010
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
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
GOSTEI 0
Wilson Junior
25/11/2010
Faça isto e veja qual o valor está retornando.
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.
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.
GOSTEI 0
Valdir Lima
25/11/2010
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
GOSTEI 0