Pregunta: | 5184 - A MI PARECER EL VB5 PROF. NO REALIZA BIEN LAS MATEMATICAS? |
Autor: | guillermo flook |
al menos en el vb que uso 5 edicion profesional este simple pedazo de codigo no anda bien, todas las variables son INTEGER. textbox.enabled = a * not(b) * c entendiando que un resultado de la fórmula igual a CERO se asigna a la propiedad un valor FALSE. ahora todo numero multiplicado x cero es cero al menos eso dicen las leyes de la matematicas bueno asignando C = 0 siendo las variable a o b de x valor, el resultado de la formula no es siempre CERO y la propiedad se establece en TRUE aun cuando C = 0 INCREIBLE NO!!!! para resolver el problema use este truco textbox.enabled = (a * not(b)) * c le puse parentesis y anda mi pregunta es ¿estoy equivocado? |
Respuesta: | juan Cecconi |
EL problema es que lo que tu escribes no es lo que debes poner, pues el operador NOT no es una funcion , por lo cual el poner NOT (x) * y significa que haga una operacion Not de todos los bits de la expresion que tiene a derecha, es decir, que no esta tomando como unico parametro x pues no es una funcion!!! la forma es : a * c * Not b o si quieres utilizar algo parecido a lo que pusiste antes: a * (Not (b)) * c el valor que devuelve la expresion que tu pusiste no depende de "c" porque el Not se efectua sobre la expresion "(b) * c" (que es siempre 0, si c=0) entonces al hacer el Not devolvera el hexa "FFFF" (todos los bits 1) con lo cual es equivalente al numero "-1" (en complemento a 2, que es como trabaja el procesador) , de esta forma la expresion final es equivalente a lo que tu pones es: Text.Enable = a * (-1) que obviamente sera true siempre que la cuenta de distinto de cero (false es equivalente a 0) Esto lo puedes verificar si pones en la ventana de inspeccion tu expresion y luego cambias los valores de a,b y c Saludos!!! |