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 10-02-2006
Cosgaya Cosgaya is offline
Miembro
 
Registrado: jun 2005
Posts: 105
Poder: 19
Cosgaya Va por buen camino
parar bucle

hola
¿se puede hacer que un bucle while en tiempo de ejecucion se pause o se detenga?
Responder Con Cita
  #2  
Antiguo 10-02-2006
Avatar de FunBit
FunBit FunBit is offline
Miembro
 
Registrado: jun 2005
Ubicación: Santa Maria d'Oló
Posts: 572
Poder: 19
FunBit Va por buen camino
Revisa Application.ProcessMessages.

A lo mejor te da alguna idea...

Saludos!
__________________
Brot Psicòtik
Responder Con Cita
  #3  
Antiguo 10-02-2006
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.272
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Si lo que quieres es interrumpirlo, puedes añadirle un flag a la condición.

Código Delphi [-]
while (condicion) do begin
...
end;



Código Delphi [-]
flag := false;
while (condicion) and (not flag) do begin
...
end;

Cuando quieres interumpirlo, basta con que en algún sitio (dentro o fuera del bucle) actives el Flag.

Código Delphi [-]
  flag := true;

No se si es a esto a lo que te refieres...
Tal vez deberías dar más detalles de lo que quieres.
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #4  
Antiguo 10-02-2006
Cosgaya Cosgaya is offline
Miembro
 
Registrado: jun 2005
Posts: 105
Poder: 19
Cosgaya Va por buen camino
si, para pararlo eso me sirve, ahoro tengo que averiguar como pausarlo.
gracias neftali
Responder Con Cita
  #5  
Antiguo 10-02-2006
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.272
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Creo que si necesitas "pausar" un bucle, es que no estás realizando un diseño correcto.
Por más que pienso en cómo "pausar" un bucle, sólo se me ocurre generando una espera activa (un bucle en su interior que no haga nada).
Ésta opción es mala; Muy mala por el consumo de recursos.

De ahí que creo que tal vez lo que estás pensando se pueda hacer de otra forma más "adecuada"; Tal vez si te explicas mejor...
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #6  
Antiguo 10-02-2006
Cosgaya Cosgaya is offline
Miembro
 
Registrado: jun 2005
Posts: 105
Poder: 19
Cosgaya Va por buen camino
hola neftali hice lo que me dijiste para parar el bucle:
Código Delphi [-]
flag := false;
while (condicion) and (not flag) do begin
...
end;
y despues en un button aparte le cambio el valor de flag a true
Código Delphi [-]
flag :=true;

pero esque el programa me ocupa el 99% del procesador y no me deja apretar el boton
hay alguna otra manera de pararlo?
Responder Con Cita
  #7  
Antiguo 10-02-2006
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.272
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Cita:
Empezado por Cosgaya
...
pero esque el programa me ocupa el 99% del procesador y no me deja apretar el boton hay alguna otra manera de pararlo?
Pon dentro del bucle lo que te han comentado antes:

Código Delphi [-]
  Application.ProcessMessages;
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #8  
Antiguo 10-02-2006
Avatar de vtdeleon
vtdeleon vtdeleon is offline
Miembro
 
Registrado: abr 2004
Ubicación: RD & USA
Posts: 3.236
Poder: 24
vtdeleon Va por buen camino
Saludos

Creo que un Break puede solucionar eso.

Hice una prueba
Código Delphi [-]
var
  Flag:Boolean;
  n:integer;
begin
  n:=0;
  Flag:=True;
  Flag2:=False;//Variable Global
  while Flag do begin
    Application.ProcessMessages;
    Inc(n);
    Label2.Caption:=IntToStr(n);
    if Flag2 then//Se de asigna True en otra rutina
      break;
  end;

end;
__________________
Van Troi De León
(Not) Guía, Code vB:=Delphi-SQL, ¿Cómo?
Viajar en el tiempo no es teóricamente posible, pues si lo fuera, ya estarían aqui contándonos al respecto!

Última edición por vtdeleon fecha: 10-02-2006 a las 14:11:37.
Responder Con Cita
  #9  
Antiguo 10-02-2006
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.272
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Código Delphi [-]
  while Flag do begin
    Application.ProcessMessages;
    Inc(n);
    Label2.Caption:=IntToStr(n);
    if Flag2 then//Se de asigna True en otra rutina
      break;
  end;
Creo que son equivalentes.

Código Delphi [-]
  while Flag and (not Flag2) do begin
    Application.ProcessMessages;
    Inc(n);
    Label2.Caption:=IntToStr(n);
  end;
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #10  
Antiguo 10-02-2006
Avatar de vtdeleon
vtdeleon vtdeleon is offline
Miembro
 
Registrado: abr 2004
Ubicación: RD & USA
Posts: 3.236
Poder: 24
vtdeleon Va por buen camino
Cita:
Empezado por neftali
Creo que son equivalentes.
It's true.

Saludos
__________________
Van Troi De León
(Not) Guía, Code vB:=Delphi-SQL, ¿Cómo?
Viajar en el tiempo no es teóricamente posible, pues si lo fuera, ya estarían aqui contándonos al respecto!
Responder Con Cita
  #11  
Antiguo 10-02-2006
Avatar de FunBit
FunBit FunBit is offline
Miembro
 
Registrado: jun 2005
Ubicación: Santa Maria d'Oló
Posts: 572
Poder: 19
FunBit Va por buen camino
Cosgaya si nos comentas el objetivo del búcle quizas podamos encontrar una alternativa...

Saludos!
__________________
Brot Psicòtik
Responder Con Cita
  #12  
Antiguo 11-02-2006
Cosgaya Cosgaya is offline
Miembro
 
Registrado: jun 2005
Posts: 105
Poder: 19
Cosgaya Va por buen camino
el objetivo para el bucle es un generador de contraseñas:
este es el codigo:
Código Delphi [-]
var
flag :boolean;
procedure TForm1.Button1Click(Sender: TObject);
var
pass: Array of String;
num1:integer;
num2:integer;
num3:integer;
num4:integer;
num5:integer;
num6:integer;
num7:integer;
num8:integer;
begin
setlength(pass, 64);
pass[0]:='a';
pass[1]:='b';
pass[2]:='c';
pass[3]:='d';
pass[4]:='e';
pass[5]:='f';
pass[6]:='g';
pass[7]:='h';
pass[8]:='i';
pass[9]:='j';
pass[10]:='k';
pass[11]:='l';
pass[12]:='m';
pass[13]:='n';
pass[14]:='ñ';
pass[15]:='o';
pass[16]:='p';
pass[17]:='q';
pass[18]:='r';
pass[19]:='s';
pass[20]:='t';
pass[21]:='u';
pass[22]:='v';
pass[23]:='w';
pass[24]:='x';
pass[25]:='y';
pass[26]:='z';
pass[27]:='A';
pass[28]:='B';
pass[29]:='C';
pass[30]:='D';
pass[31]:='E';
pass[32]:='F';
pass[33]:='G';
pass[34]:='H';
pass[35]:='I';
pass[36]:='J';
pass[37]:='K';
pass[38]:='L';
pass[39]:='M';
pass[40]:='N';
pass[41]:='Ñ';
pass[42]:='O';
pass[43]:='P';
pass[44]:='Q';
pass[45]:='R';
pass[46]:='S';
pass[47]:='T';
pass[48]:='U';
pass[49]:='V';
pass[50]:='W';
pass[51]:='X';
pass[52]:='Y';
pass[53]:='Z';
pass[54]:='0';
pass[55]:='1';
pass[56]:='2';
pass[57]:='3';
pass[58]:='4';
pass[59]:='5';
pass[60]:='6';
pass[61]:='7';
pass[62]:='8';
pass[63]:='9';
num1:=0;
num2:=0;
num3:=0;
num4:=0;
num5:=0;
num6:=0;
flag := false;
while (num1 <=63) and (not flag)do
begin
memo1.lines.add(pass[num1]+pass[num2]+pass[num3]+pass[num4]+pass[num5]+pass[num6]);
num6 := num6 +1;
  if num6 =64 then
  begin
  num6:=0;
  num5 := num5 +1;
  end;
  if num5 =64 then
  begin
  num5:=0;
  num4 := num4 +1;
  end;
  if num4 =64 then
  begin
  num4:=0;
  num3 := num3 +1;
  end;
  if num3 =64 then
  begin
  num3:=0;
  num2 := num2 +1;
  end;
  if num2 =64 then
  begin
  num2:=0;
  num1 := num1 +1;
  end
end
end;
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
bucle dentro de un bucle Cosgaya Varios 2 06-06-2005 07:05:16
rotar una imagen sin parar jarscuba Gráficos 4 14-03-2005 09:51:31
Refresh d tb n red con Timer. Si ay cualkier xcepcion se repit el message sin parar images Conexión con bases de datos 9 25-08-2004 13:27:36
detener un bucle con un boton cancelar... dmariscal Varios 7 13-07-2004 12:52:47
Detener un bucle lfidanza Varios 5 25-06-2003 00:36:14


La franja horaria es GMT +2. Ahora son las 10:24:18.


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