FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
Interrumpir un ciclo Repeat - Until
Hola!
Un saludo y un feliz año a todos los integrantes del club. Mi pregunta basicamente es ¿como interrumpir le ejecucion de un ciclo Repeat - Until (son dos anidados) usando la tecla ESC? basicamente el ciclo es:
Como siempre agradeciendo su ayuda
__________________
ESTO ES UN FORO ... NO UN MÓVIL ¿Por qué no escribir de una manera comprensible para que los humanos lo podamos entender? |
#2
|
||||
|
||||
Yo lo he probado y si funciona, el problema que veo que puede ser por el que no te funcione, es que no le das tiempo a la aplicación para leer el teclado, para leer la tecla esc, por lo que nunca te sale del ciclo.
__________________
"La recompensa de una buena acción está en haberla hecho" |
#3
|
|||
|
|||
mmmm....
coloque
antes de la comprobacion de la tecla ESC pero no, no me funciona...
__________________
ESTO ES UN FORO ... NO UN MÓVIL ¿Por qué no escribir de una manera comprensible para que los humanos lo podamos entender? |
#4
|
||||
|
||||
¿Cómo se supone que obtiene el valor la variable key? lo pregunto porque estas haciendo un ciclo en el que 'key' no actualiza nunca su valor. Por eso nunca saldrá del bucle, por muchos sleeps que pongas. Si key obtiene su valor por una llamada a una función, deberás intercalarla en el propio ciclo. Si pones el pedazo de código más ampliado, quizás pueda ayudarte mejor.
__________________
"La recompensa de una buena acción está en haberla hecho" |
#5
|
|||
|
|||
jajajaja tienes razon!!
Key nunca obtiene un valor! Ah que bruto soy!!!
__________________
ESTO ES UN FORO ... NO UN MÓVIL ¿Por qué no escribir de una manera comprensible para que los humanos lo podamos entender? |
#6
|
|||
|
|||
Continuo con esto, he cambiado el codigo por este otro que encontre en un hilo del club; el truco es de trucomania.
Segun que funciona en los bucles, pero no, no me ha funcionado, es mas no logro entender la logica: GetKeyState regresa un smallint que es el equivalente de la tecla pulsada pero ¿que hace el AND 128 = 128? Una manita...
__________________
ESTO ES UN FORO ... NO UN MÓVIL ¿Por qué no escribir de una manera comprensible para que los humanos lo podamos entender? |
#7
|
||||
|
||||
Pues por lo que se ve es una condición que siempre se cumple, siempre verdadera, no le veo, de buenas a primeras, mucho sentido...
__________________
Ask questions. Think for yourself. Wake up and you’ll make the difference |
#8
|
||||
|
||||
Cita:
aisla ese último bit ya que el 128 tiene 1 en el bit 7 y 0 en todos los demás (la operación AND es una operación booleana bit a bit). En otras palabras, el resultado de la operación sólo puede ser 128 ó 0. De ahí la comparación con 128. Yo he hecho la prueba y funciona si añades a tu ciclo una llamada a Application.ProcessMessages:
aunque yo lo pondría así:
Agrego Otra cosa: el operador and tiene precedencia sobre el operador =. Por tanto, la expresión
es equivalente a
De manera que no es que la condición siempre sea verdadera. // Saludos |
#9
|
|||
|
|||
Lo siento si soy molesto pero ...no me funciona, modifique con la sugerencia que me diste Roman pero no, igual se queda en ciclo infinito. En si lo que estoy capturando es una cadena proveniente del COM1,el puerto ya esta abierto y comprobado que con esta rutina captura adecuadamente, sin embargo lo que quiero es poder romper el ciclo repeat - until con ESC en caso de que por alguna razon la cadena no pudiese ser capturada (puerto dañado, cadeana enviada diferente, etc). Actualmente solo desconecto el dispositivo que envia datos para poder simular una falla y usar ESC para salir del bucle.
__________________
ESTO ES UN FORO ... NO UN MÓVIL ¿Por qué no escribir de una manera comprensible para que los humanos lo podamos entender? |
#10
|
||||
|
||||
Cita:
__________________
Ask questions. Think for yourself. Wake up and you’ll make the difference |
#11
|
|||
|
|||
OK, ya me funciono....el problema estaba en que como desconectaba el transmisor nunca recibia nada y en la sentencia :
el FileRead espera recibir un caracter el cual al estar desconectado nunca llega. Si modifico la cadena enviada para que no cumpla lo que espero funciona bien con la tecla ESC. Ahora el problema cambia a como abortar el ciclo si no llega nada al puerto serie. Jeje Ese sera tema de otro hilo. Gracias por la ayuda!!!
__________________
ESTO ES UN FORO ... NO UN MÓVIL ¿Por qué no escribir de una manera comprensible para que los humanos lo podamos entender? |
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
Interrumpir proceso | Jose_Pérez | Varios | 3 | 07-01-2009 00:23:02 |
Duda sobre variable en un Bucle Repeat | gerupc | Varios | 9 | 21-07-2007 02:44:34 |
crear label por codigo en un ciclo for.. las beses de el ciclo | sakuragi | .NET | 3 | 29-09-2005 05:04:29 |
Interrumpir un for | Majo | Varios | 10 | 31-03-2004 21:37:53 |
Interrumpir un procedimiento almacenado | mlara | Firebird e Interbase | 1 | 30-01-2004 09:59:48 |
|