Exibir mensagem anterior :: Exibir próxima mensagem |
Autor |
Mensagem |
kakarlos Experiente

Registrado: Quinta-Feira, 30 de Setembro de 2010 Mensagens: 420
|
Enviada: Ter Out 21, 2014 9:33 pm Assunto: nao acho o erro |
|
|
ola pessoal ...tenho um codigo aqui... ele nao me retorna nenhum erro mas tamber nao funciona.. se eu usar ele separadamente funciona perfeito mas aqui nao..
Código: |
var1:='0';
if (resultado > resultado2) and (resultado <= FloatToStr(StrToFloat(resultado2)*(StrToFloat('2')))) THEN
VAR1:='2';
showmessage(var1);
|
a mensagem que ele me retorna eh 0....
porque sera? |
|
Voltar ao Topo |
|
 |
anderbelluno Colaborador


Registrado: Quarta-Feira, 23 de Novembro de 2011 Mensagens: 1030 Localização: Cianorte-PR
|
Enviada: Qua Out 22, 2014 1:53 am Assunto: |
|
|
pq vc ta transformando para Str ao fazer os calculos?
basta na hora de mostrar a mensagem. Outra coisa vc tem certeza que as variaveis estao sendo preenchidas corretamente ? acho melhor vc usar uns breakpoint para analizar linha por linha.
att.
Anderson. |
|
Voltar ao Topo |
|
 |
johnny-walker Moderador


Registrado: Sábado, 4 de Outubro de 2003 Mensagens: 10653 Localização: Contagem/MG - BRAZIL
|
Enviada: Qua Out 22, 2014 9:22 am Assunto: |
|
|
Vou te dar uma sugestão, não utilize strings para fazer contas, isto acaba mais por confundir uma operação que poderia ser simplificada.
Se vai mostrar a mensagem, basta fazer um typecasting na variável.
Assim evita-se erros e conversões desnecessárias.
bye _________________ P.O.W.E.R B.Y D.E.L.P.H.I |
|
Voltar ao Topo |
|
 |
kakarlos Experiente

Registrado: Quinta-Feira, 30 de Setembro de 2010 Mensagens: 420
|
Enviada: Qua Out 22, 2014 11:38 am Assunto: |
|
|
anderbelluno escreveu: | pq vc ta transformando para Str ao fazer os calculos?
basta na hora de mostrar a mensagem. Outra coisa vc tem certeza que as variaveis estao sendo preenchidas corretamente ? acho melhor vc usar uns breakpoint para analizar linha por linha.
att.
Anderson. |
cara verifiquei , as variaveis estao cendo preenchidas certas...
nao consigo entender o por que..
se eu nao transformar para Str de um erro... |
|
Voltar ao Topo |
|
 |
jr.schon Novato

Registrado: Quarta-Feira, 22 de Outubro de 2014 Mensagens: 4
|
Enviada: Qua Out 22, 2014 1:41 pm Assunto: |
|
|
Olá, eu tive problema uma vez em fazer a conversão dentro do calculo.
Eu acabei fazendo as conversões antes, e depois os calculos.
Exemplo:
a := Round(strtofloat(edit1.text)+strtofloat(edit2.text));
Tive que fazer assim:
a:=strtofloat(edit1.text);
b:=strtofloat(edit2.text);
c:=a+b;
d:=Round(c);
Faça um teste dessa maneira. |
|
Voltar ao Topo |
|
 |
kakarlos Experiente

Registrado: Quinta-Feira, 30 de Setembro de 2010 Mensagens: 420
|
Enviada: Qua Out 22, 2014 5:45 pm Assunto: |
|
|
jr.schon escreveu: | Olá, eu tive problema uma vez em fazer a conversão dentro do calculo.
Eu acabei fazendo as conversões antes, e depois os calculos.
Exemplo:
a := Round(strtofloat(edit1.text)+strtofloat(edit2.text));
Tive que fazer assim:
a:=strtofloat(edit1.text);
b:=strtofloat(edit2.text);
c:=a+b;
d:=Round(c);
Faça um teste dessa maneira. |
Cara.. eu ja havia tentado.
eh muito estranho nao funciona...
parace que nao esta funcionando a condição IF pois se eu colocar elas sozinhas funciona... |
|
Voltar ao Topo |
|
 |
DanielChrome Novato

Registrado: Sexta-Feira, 18 de Outubro de 2013 Mensagens: 23
|
Enviada: Qui Out 23, 2014 11:56 am Assunto: |
|
|
if (resultado > resultado2) and (resultado <= FloatToStr(StrToFloat(resultado2)*(StrToFloat('2')))) THEN
VAR1:='2';
Vamos analisar sua condição IF:
Se Resultado for MAIOR que resultado 2 E
Resultado for Menor ou Igual a Resultado2 * 2.
Nunca irá funcionar, pois você está quebrando a comparação. Em que situação o Resultado será MAIOR e (MENOR-IGUAL) ao mesmo tempo???
Melhore seu IF, ele está contráditorio. |
|
Voltar ao Topo |
|
 |
kakarlos Experiente

Registrado: Quinta-Feira, 30 de Setembro de 2010 Mensagens: 420
|
Enviada: Sex Out 24, 2014 11:16 am Assunto: |
|
|
Cara nao eh isso ai nao ..
ja achei o erro bastava adicionar StrtoInt
if (strtoint(resultado) > strtotin(resultado2)) and (strtoint(resultado) <= FloatToStr(StrToFloat(resultado2)*(StrToFloat('2')); |
|
Voltar ao Topo |
|
 |
gilsonnrodrigues Moderador

Registrado: Quinta-Feira, 14 de Abril de 2005 Mensagens: 9009 Localização: Governador Valadares-MG
|
Enviada: Seg Out 27, 2014 2:32 pm Assunto: |
|
|
é 12 é maior q 5
mas
'5' é maior q '12'
entendeu? |
|
Voltar ao Topo |
|
 |
anderbelluno Colaborador


Registrado: Quarta-Feira, 23 de Novembro de 2011 Mensagens: 1030 Localização: Cianorte-PR
|
Enviada: Seg Out 27, 2014 2:40 pm Assunto: |
|
|
kakarlos escreveu: | Cara nao eh isso ai nao ..
ja achei o erro bastava adicionar StrtoInt
if (strtoint(resultado) > strtotin(resultado2)) and (strtoint(resultado) <= FloatToStr(StrToFloat(resultado2)*(StrToFloat('2')); |
Estou seguindo o seu post para tentar entender sua logica, mas até agora nao consigo entender quando Valor1 vai ser maior que Valor2 e ao mesmo tempo menor ou igual ao Valor2 * 2. Me parece meio impossivel que isso aconteça. Me corrija se estou errado, mas acho melhor vc rever sua logica. |
|
Voltar ao Topo |
|
 |
kakarlos Experiente

Registrado: Quinta-Feira, 30 de Setembro de 2010 Mensagens: 420
|
Enviada: Sáb Nov 01, 2014 8:32 am Assunto: |
|
|
eu ja resolvi ... mas vou explicar...
se resultado for maior que resultado2 e resultado menor que duas vezes o resultado2...
oque eu estou fazer eh verificando se o resultado esta entre o resultado2 e o dobro do resultado2.....
ex:
resultado:=5
resultado2:=4
if *5 > *4 and *5 <= *8 then... .. o oito eh por que eh quatro multiplicado por 2..
assim verifico se ele esta dentro de uma determinada faixa..
nao sei se fui claro .... mas minha logica funcionou sim... |
|
Voltar ao Topo |
|
 |
|