Ver la Versión Completa : Numero Mayor igual , Menor igual... Problema
ZiriusB
27-06-2011, 15:38:13
Buenos dias, tengo un problema estoy realizando una aplicacion en donde arrojo un numero como resultado, y realizo una operacion para darle a ese numero un valor depende de lo que de el resultado...
Es decir si el resultado va de 1 a 50, entonces en NPROMEDIO voy a obtener un "2", si va de 50 a 70 en N PROMEDIO obtendre un "3"... asi tengo hasta el momento la sentencia:
if (npromedio.Text>='0') and (npromedio.Text<='34,99') then
begin
npromedio.Text:='0'
end
else
if (npromedio.Text>='35') and (npromedio.Text<='45,99') then
begin
npromedio.Text:='1'
end
else
if (npromedio.Text>='46') and (npromedio.Text<='74,99') then
begin
npromedio.Text:='2'
end
else
if (npromedio.Text>='75') and (npromedio.Text<='95,99') then
begin
npromedio.Text:='3'
end
else
if (npromedio.Text>='96') and (npromedio.Text<='100') then
begin
npromedio.Text:='4';
end;
El problema es que cuando el resultado es 100 me coloca en NPROMEDIO "0" aun cuando le digo que sera "4", intente con otro TEDIT y me da el mismo resultado...tengo solo problemas cuando es 100...cuando va de 1 a 99 todo esta bien!
Si podrian guiarme se los agradeceria
Un millon de gracias!
oscarac
27-06-2011, 15:42:59
me ha pasado que cuando se utilizo cadenas (con numeros) para comparaciones, se genera algun tipo de inconsistencia
trata de pasar las cadenas a numero
if (strtoint(npromedio.Text)>=0) and (strtoint(npromedio.Text)<=34,99) then
begin
npromedio.Text:='0'
end
aposi
27-06-2011, 15:49:49
cuando en npromedio.text es 100, o es 100,00 ?? En formato texto, como es ti caso, 100,00 es mayor que 100
if (npromedio.Text>='96') and (npromedio.Text<='100,00') then
begin
npromedio.Text:='4';
end;
otra solucion seria:
if (npromedio.Text>='96') then
begin
npromedio.Text:='4';
end;
ZiriusB
27-06-2011, 15:51:18
Me genera un error de tipos no compatibles
[DCC Error] Evaluacion.pas(684): E2008 Incompatible types
Aposi:
Es "100" ese numero es el resultado de la suma de otros...las otras formas ya las he intentado y nada que resulta, sin embargo si coloco SOLO:
if (npromedio.Text=100) then
begin
npromedio.Text:='4'
end
Ahi si me escribe "4"
aposi
27-06-2011, 15:53:56
Pensandolo mejor, como dice oscarac es mejor passar a numero el valor
si es texto 100 es menor de 96...
oscarac
27-06-2011, 15:56:51
Pensandolo mejor, como dice oscarac es mejor passar a numero el valor
si es texto 100 es menor de 96...
en cadenas 1 < 9
aposi
27-06-2011, 16:03:40
en cadenas 1 < 9
valor := '100' ;
if valor <= '96' then showmessage ('menor')
else showmessage ('mayor');
ZiriusB
27-06-2011, 16:34:45
me ha pasado que cuando se utilizo cadenas (con numeros) para comparaciones, se genera algun tipo de inconsistencia
trata de pasar las cadenas a numero
if (strtoint(npromedio.Text)>=0) and (strtoint(npromedio.Text)<=34,99) then
begin
npromedio.Text:='0'
end
Me genera un error
[DCC Error] Evaluacion.pas(684): E2008 Incompatible types
oscarac
27-06-2011, 16:39:52
no sera 34.99 en lugar de 34,99?
ZiriusB
27-06-2011, 16:58:31
no sera 34.99 en lugar de 34,99?
Creo que es por esto:
npromedio.text := Floattostr(StrToFloat(edit13.Text) + StrToFloat(edit14.Text));
Es una linea que tengo antes de el primer codigo que pase...
ecfisa
27-06-2011, 17:10:10
Me genera un error
[DCC Error] Evaluacion.pas(684): E2008 Incompatible types
Hola.
El error sucede en esta línea:
if (strtoint(npromedio.Text)>=0) and (strtoint(npromedio.Text)<=34,99) then
Y es por que npromedio.Text puede asumir un valor real, por lo tanto la comparación correcta es:
if (StrToFloat(npromedio.Text) >= 0) and (StrToFloat(npromedio.Text) <= 34,99) then
Saludos.
oscarac
27-06-2011, 17:12:45
bueeeeeenoooo
la cosa estaba por ahi gracias ecfisa
ZiriusB
27-06-2011, 17:31:24
Hola.
El error sucede en esta línea:
if (strtoint(npromedio.Text)>=0) and (strtoint(npromedio.Text)<=34,99) then
Y es por que npromedio.Text puede asumir un valor real, por lo tanto la comparación correcta es:
if (StrToFloat(npromedio.Text) >= 0) and (StrToFloat(npromedio.Text) <= 34,99) then
Saludos.
if (StrToFloat(npromedio.Text)>=0) and (StrToFloat(npromedio.Text)<=34.99) then
npromedio.Text:='0';
Exacto, lo cambie en todos y listo...ademas de cambiar la "," por el "."
Gracias amigos...
vBulletin v3.6.8, Derechos ©2000-2024, Jelsoft Enterprises Ltd.