Club Delphi  
    FTP   CCD     Enlaces   Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Respuesta
 
Herramientas Desplegado
  #1  
Antiguo 26-08-2008
emeceuy emeceuy is offline
Miembro
 
Registrado: jun 2003
Ubicación: Uruguay
Posts: 118
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.679
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


Herramientas
Desplegado

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 21:04:22.


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