Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 06-01-2009
[FGarcia] FGarcia is offline
Miembro Premium
 
Registrado: sep 2005
Ubicación: Cordoba, Veracruz, México
Posts: 1.123
Poder: 20
FGarcia Va por buen camino
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:

Código Delphi [-]
repeat
   repeat
      until //lo que sea
until //lo otro 
 
//intente esto pero no me hace nada. key es un var de tipo Char
repeat
   repeat
      if key = #27 then
        break;
      until //lo que sea que espere
   if key = #27 then
      break;
until //lo otro que espere

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?
Responder Con Cita
  #2  
Antiguo 06-01-2009
Avatar de DarkMan
DarkMan DarkMan is offline
Miembro
 
Registrado: jul 2006
Posts: 102
Poder: 18
DarkMan Va por buen camino
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"
Responder Con Cita
  #3  
Antiguo 06-01-2009
[FGarcia] FGarcia is offline
Miembro Premium
 
Registrado: sep 2005
Ubicación: Cordoba, Veracruz, México
Posts: 1.123
Poder: 20
FGarcia Va por buen camino
mmmm....
coloque

Código Delphi [-]
sleep(100);


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?
Responder Con Cita
  #4  
Antiguo 06-01-2009
Avatar de DarkMan
DarkMan DarkMan is offline
Miembro
 
Registrado: jul 2006
Posts: 102
Poder: 18
DarkMan Va por buen camino
¿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"
Responder Con Cita
  #5  
Antiguo 06-01-2009
[FGarcia] FGarcia is offline
Miembro Premium
 
Registrado: sep 2005
Ubicación: Cordoba, Veracruz, México
Posts: 1.123
Poder: 20
FGarcia Va por buen camino
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?
Responder Con Cita
  #6  
Antiguo 06-01-2009
[FGarcia] FGarcia is offline
Miembro Premium
 
Registrado: sep 2005
Ubicación: Cordoba, Veracruz, México
Posts: 1.123
Poder: 20
FGarcia Va por buen camino
Continuo con esto, he cambiado el codigo por este otro que encontre en un hilo del club; el truco es de trucomania.

Código Delphi [-]
// Los datos se repiten y terminan con #13(CR)
  repeat
    repeat
      //Rompe ciclo con ESC
      Application.ProcessMessages ;
      if GetKeyState(VK_Escape) and 128 = 128 then
        break;
    until FileRead(HandlePuerto,Num,1)=1;
  //Rompe ciclo con ESC
  Application.ProcessMessages ;
  if GetKeyState(VK_Escape) and 128 = 128 then
    break;
  until Num = Terminador; // Final de cadena anterior

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?
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

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


La franja horaria es GMT +2. Ahora son las 11:33:47.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi