Fórum Comparação de sentenças #372727

24/07/2009

0

Oi pessoal, é uma dúvida boba, mas não estou conseguindo acertar aqui..eu criei um sistema que recebe valores num DBGrid , e a partir desses valores gera um gráfico, mas esse gráfico não pode conter valores <0 .
A minha idéia é a seguinte: na hr de mostrar o gráfico , aparece a msg que o gráfico não pode ser feito pois têm valores negativos.
Basta entrar com 1 va,or positivo que ele faz o gráfico, mas se tiver pelo menos 1 valor <0 o gráfico não deveria ser feito !
A parte do código é essa:

begin
Chart1.series[0].Clear;
Chart1.series[0].AddXY(0,0);
for c:=1 to Form1.SpEtapa.Value do
begin
s:=Form1.DadosGrid.Cells[2,c]; //conteúdo da coluna 2: s(m) // recebe valores do DBGrid
q:=Form1.DadosGrid.Cells[3,c]; //conteúdo da coluna 3: Q(m3/h)
//A partir daqui dá o erro !
if StrToFloat(s)<0 then
begin
Showmessage (´Não é possível construir o gráfico ´Curva do poço´ com valores de ND(m) menores que os valores de Ne(m)´);
close;
end
else
Chart1.series[0].AddXY(StrToFloat(q),StrToFloat(s));

end;

end;


Agradeço se algm puder ajudar !


Iza

Iza

Responder

Posts

24/07/2009

Iza

esqueci de posta mais essa parte, que é o motivo do nome para a meu tópico!

Se eu escrever a sentença:

if StrToFloat(s)<0 and if StrToFloat(s)>0

Não dá certo...como eu poderia escrever, para assim que um valor negativo teha sido digitado, ele não faça mais o gráfico.


Responder

Gostei + 0

24/07/2009

Danielrsanches

a forma de fazer 2 comparações seria esta:

if (StrToFloat(s)<0) and (StrToFloat(s)>0) then comandos...

porém, esse if é irreal, pois, um valor nunca será <0 e ao mesmo tempo >0 ....

post aki o que pretende com esse if, caso ainda tenha restado dúvidas ...

abraços !!!


Responder

Gostei + 0

24/07/2009

Iza

entao...eu tentei isso, mas logo vi q é meio impossível essa sentença né !!rsrsr

eu quero fazer o seguinte:

if StrToFloat(s)<0 then // e aqui entraria a sentença ´if StrToFloat(s)<0 and if StrToFloat(s)>0
begin
Showmessage (´Não é possível construir o gráfico ´Curva do poço´ com valores de ND(m) menores que os valores de Ne(m)´);
close;
end
else
Chart1.series[0].AddXY(StrToFloat(q),StrToFloat(s));


Não consegui acertar ainda...pq entre tds os valores digitados, se PELO MENOS 1 for negativo, o gráfico não pode mais ser gerado !


Responder

Gostei + 0

24/07/2009

Osocram

Não entendi qual o erro.

Pq não da certo?
o certo seria ( if StrToFloat(s)<0 )

Mas qual o erro q da qdo vc faz assim?



esqueci de posta mais essa parte, que é o motivo do nome para a meu tópico! Se eu escrever a sentença: if StrToFloat(s)<0 and if StrToFloat(s)>0 Não dá certo...como eu poderia escrever, para assim que um valor negativo teha sido digitado, ele não faça mais o gráfico.



Responder

Gostei + 0

24/07/2009

Iza

entao ´osocram´ é o seguinte :

Se eu escrever só com esse IF não dá certo, porque o gráfico continua sendo gerado ! ele não coloca no gráfico o ponto negativo, mas continua fazendo com o positivo...e não devia fazer..
Não sei se tá dando pra entender..mas agradeço a ajuda !


Responder

Gostei + 0

24/07/2009

Osocram

faz 2x o for

uma primeira vez apenas p validar se tem valor negativo
var
TemValorNegativo :boolean;

TemValorNegativo := false;
for c:=1 to Form1.SpEtapa.Value do
begin
s:=Form1.DadosGrid.Cells[2,c]; //conteúdo da coluna 2: s(m) // recebe valores do DBGrid
q:=Form1.DadosGrid.Cells[3,c]; //conteúdo da coluna 3: Q(m3/h)
if StrToFloat(s)<0 then begin
TemValorNegativo := true;
Break;
end;
end;

if TemValorNegativo then
Exit;

For..... <- aqui o for q vc postou p agente.


acho q isso resolve.
entao ´osocram´ é o seguinte : Se eu escrever só com esse IF não dá certo, porque o gráfico continua sendo gerado ! ele não coloca no gráfico o ponto negativo, mas continua fazendo com o positivo...e não devia fazer.. Não sei se tá dando pra entender..mas agradeço a ajuda !



Responder

Gostei + 0

27/07/2009

Iza

Olá Osocram !! mto obrigada pela ajuda...agora deu certo !!! está funcionando direitinho !! =)


Responder

Gostei + 0

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

Aceitar