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 26-08-2008
emeceuy emeceuy is offline
Miembro
 
Registrado: jun 2003
Ubicación: Uruguay
Posts: 122
Poder: 21
emeceuy Va por buen camino
detener procedimiento largo

Hola, tengo una consulta "rara"... necesito poder detener un evento que se ejecuta al presionar un botón y es muy largo (dura al rededor de 6 minutos)... al apretar dicho botón comienzan a ejecutarse varias rutinas, procedimientos, funciones, etc, son unas cuantas, como les decía duran varios minutos. Para que no se cuelgue el programa y se puedan hacer algunas otras cosas o cambiar el cursor de lugar, etc, he puesto en varios lugares "application.procesmessage".

Así el programa funciona de maravillas, pero me gustaría tambien poder detenerlo al presionar un botón de cancelar o algo así...

Una posibilidad sería utilizar un flag boolean y activarlo al presionar cancelar, y chequear este flag que no esté seteado antes de entrar a cada funcion, el problema es que cada funcion tarda unos cuantos segundos, y no quiero tener que esperar tantos segundos para detener el ciclo, entonces esa forma no me sirve, e ir más hacia adentro de las funciones para hacer algo similar y "acortar" el tiempo ese, sería muy complicado, porque son funciones dentro de otras funciones. Espero ser claro, es dificil de explicar.

A alguien se le ocurre alguna idea? muchas gracias desde ya !

Adjunto un "esquema" del código:
Código Delphi [-]
procedure TfrmPrincipal.btnAnalizarClick(Sender: TObject);
begin
   if EST.Conectado then
      begin
         funcion1(...);
         funcion2(...);
         fDemora(...);
         procedimiento1(...);
         fDemora(...);
         funcion3(...);
         ... etc, etc
      end;
end;
__________________
Marcelo C.
Responder Con Cita
  #2  
Antiguo 27-08-2008
[coso] coso is offline
Miembro Premium
 
Registrado: may 2008
Ubicación: Girona
Posts: 1.678
Poder: 0
coso Va por buen camino
Hola,
personalmente uso lo del flag que has comentado. Otra manera que se me ocurre, aunque algo complicada, es crear un hilo con esas funciones y si se pulsa cancelar, hacerle un kill al hilo.
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
procedimiento "largo", con envio y recepcion serial emeceuy Varios 9 28-06-2008 16:26:45
Como Transormar un string largo a Integer largo RodoRodo Varios 1 27-06-2007 02:26:29
Detener el autonumerico jzginez Firebird e Interbase 3 20-08-2006 03:27:51
Ayuda, como llamar a un procedimiento desde otro procedimiento? Ariatna Varios 1 01-02-2005 04:05:35
Detener un bucle lfidanza Varios 5 25-06-2003 00:36:14


La franja horaria es GMT +2. Ahora son las 16:48:44.


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