FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
Como hacer if 1,2,3.....
Hola, estoy escuchando un puerto que me puede dar ciertos valores enteros, pero esos valores los quiero comparar de a grupos... es decir quiero hacer algo asi como:
if A = 1 or 2 or 3 etc etc. Es decir hay algo como para hacer if A "entre" 1...100 hago tal cosa else if A entre 101...200 hago tal otra? para no tener que poner los 100 valores? Seguramente es algo sencillo pero no logro hacerlo aun que sea tirenme un hilo donde buscar, muchas gracias. |
#3
|
||||
|
||||
Creo que puedes hacer algo así:
|
#4
|
||||
|
||||
Extraído de la ayuda.
Espero que te sirva. Saludos
__________________
Cuando los grillos cantan, es que es de noche - viejo proverbio chino - |
#5
|
||||
|
||||
Ya te dieron 3 formas de hacer lo mismo, sin embargo creo que la primera es la más eficiente por directa, las otras 2 no sé si al final el compilador las optimice hasta llegar a lo mismo que la primera. No indicas si siempre será un rango continuo o bien pueden ser lecturas discontinuas (ej: 1,2,3,4 vs 1,5,20, 4)
__________________
AKA "El animalito" ||Cordobés a mucha honra|| |
#6
|
|||
|
|||
Wow !!! lluvia de respuestas rapidisimo !!! Gracias a todos !!! estoy probando con la segunda opcion de Casimiro y aca va , creo yo, algo mas detallado de lo que estoy haciendo Azid.
Estoy usando unos componentes basados en Indy para escuchar el puerto 502 para PLC, el tema es que el automata me envia una palabra (1,2, 5, 128, 255) yo lo que hice fue programar las salidas del automata para que me diga ciertos enteros dependiendo de lo que pase dentro del mismo. Ahora cuando trabajo con pocas entradas no pasa nada, el codigo es corto y rapido, pero si tengo que procesar 8 bits se complica ya que obtengo de 0 a 255 combinaciones posibles entre esos bits! El agruparlos con [1..100] me funciona, ahora mi problema es en los primeros bits, porque por ejemplo mi IF va con in[1,3,5,7,9,11,13.... asi hasta llegar a 255 !! , hay algun metodo que yo pueda usar para decirle oye cuenta pero solo los impares hasta 255??? y el bit 2 cuenta 2,4 7,8 etc? De todas formas una vez escrito es copiar y pegar pero quiero aprender a hacer mas eficiente mi codigo ! Gracias a todos !!! |
#7
|
||||
|
||||
Si te devuelve un word puedes compararlo con su equivalente decimal que es más sencillo de hacer, ahora bien, mencionas que dependiendo de ciertas condiciones te devolverá diferentes enteros, pues esto es mas simple, a no ser que varias condiciones produzcan los mismos resultados, por ejemplo hablando en términos naturales : "ya no me puedo mover hacia arriba", "no me puedo mover hacia abajo", "no soporto el peso", etc. todas son condiciones que pudieran tener como respuesta " regresa al punto inicial".
Ya mas o menos te voy entendiendo, serviria si platicas más que hace tu robot y que esperas tú que haga con lo la información que te envía.
__________________
AKA "El animalito" ||Cordobés a mucha honra|| |
#8
|
|||
|
|||
una manera fácil q supongo funcionaría y rápida (quizá no es la más optimizada) es esto:
Hacer un for o while en la que contenga 2 variables: Una se llama por ej: formula de tipo integer o float. la segunda ej: resultado de tipo array. entonces, segun las matematicas para obtener un número impar es 2n (para asegurarnos de que sea par) + 1 (para el impar) esto es, (2n+1) <- nº impar. en el for que ya contiene la variable I: integer; colocas "2 X I + 1" luego la agregas al array.. ... |
#9
|
|||
|
|||
hola más o menos así sería:
resultante es el array que contiene los números impares.., no está del todo perfecto, ni siquiera tengo el delphi a mano xD pero obtinene los primeros 255 impares Última edición por cmm07 fecha: 09-10-2010 a las 03:08:44. |
#10
|
||||
|
||||
Cita:
Código:
if (x in [1..255]) and Odd(x) then showmessage('x vale entre 1..255 y es impar'); //para par if (x in [1..255]) and Not Odd(x) then ...........
__________________
Disfruten cada minuto de su vida a lado de sus seres queridos como si fuese el ultimo, uno nunca sabe lo que puede pasar. |
#11
|
||||
|
||||
Cita:
de los 'bits' pares e impares recibidos... Si no entiendo mál y es eso lo que buscas, podrías hacer:
Ejemplo de llamada: Lo que te arroja el mensaje: 'Par: 1 Impar: 3' dado que: 1 = 01 (un bit número impar) 2 = 10 (un bit número par) 3 = 11 (dos bits número impar) Es sólo un ejemplo, modificando un poco el código podes hacer que solo haga el conteo de bits por numero recibido, o en última instancia, espero que te aporte alguna idea... Saludos. Última edición por ecfisa fecha: 13-10-2010 a las 21:18:08. |
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
Como hacer un smtp server ¿relay? como el de argosoft | JXJ | Varios | 5 | 02-12-2008 19:13:52 |
como hacer graficos en php? | gabrielflowers | PHP | 2 | 22-04-2008 22:15:17 |
como hacer conexion con dbe | cutfe | Conexión con bases de datos | 1 | 18-04-2008 05:15:57 |
¡¡Como hacer un exe que modifique un EXE | JXJ | Varios | 0 | 09-08-2005 20:36:33 |
No se como hacer SQL | Alexander | SQL | 1 | 28-06-2005 22:27:51 |
|