Club Delphi  
    FTP   CCD     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 Buscar en Tema Desplegado
  #1  
Antiguo 31-01-2008
trohan trohan is offline
Miembro
 
Registrado: Apr 2007
Posts: 16
Poder: 0
trohan Va por buen camino
Parar ejecucion de un proceso

Hola he hecho un programita que borra por la red una carpeta que yo le especifique, pero suponiendo que quisiera parar el borrado no tengo la forma de hacerlo sino iendo al adminstrador de tareas y cerrar la aplicacion completa, cuando lo que en realidad me interesa es que el deje de hacer lo que le mande sin cerrar la aplicacion. Por tanto lo que necesito es el codigo para hacer un boton de parado. Espero me haya explicado bien, un saludo.
Responder Con Cita
  #2  
Antiguo 31-01-2008
Avatar de ixMike
ixMike ixMike is offline
Miembro
 
Registrado: Feb 2004
Posts: 1.151
Poder: 16
ixMike Va por buen camino
Bueno, según cómo hagas el borrado. Si utilizas la API SHFileOperation, pues con que se muestre la ventanita de progreso y le des al botón "cancelar" sobra.

Ahora, si lo que haces es un bucle para ir borrando los archivos según los encuentras, lo que has de hacer es meter (al principio o al final del bucle) esto:

Código Delphi [-]
var
  ...
  Cancelado: Boolean; //Variable global, al menos al formulario
  ...
begin
  Cancelado:=False;
  ....
  //while, for, repeat... lo que utilices
    begin
      ...
      Application.ProcessMessages;
      If Cancelado then Exit; //detiene la ejecución del código. Si sólo quieres salir del bucle, utiliza Break;
    end;  //final del bucle
  ...
end;

Además, coloca un botón "Cancelar" y en su evento OnClick, la línea Cancelado:=True;

El funcionamiento de esto es sencillo. Cancelado:=False es para inicializar la variable (hay que hacerlo cada vez que de les a "Borrar", para evitar que se pare después de que ya hayas cancelado una vez). Application.ProcessMessages sirve para procesar todos los mensajes que la aplicación tiene en cola (como pulsar en botón "Cancelar"). Si tras esto se ha pulsado el botón (Cancelado=True) entonces sale del bucle.

¡Pero atención! El ProcessMessages también toma otras acciones, como cerrar, minimizar... así que asegúrate de inhabilitar todo aquello que sea problemático antes de inicar el bucle, y después de reestablecerlo todo.

Espero que te sirva.


Salu2.
Responder Con Cita
  #3  
Antiguo 01-02-2008
trohan trohan is offline
Miembro
 
Registrado: Apr 2007
Posts: 16
Poder: 0
trohan Va por buen camino
POr alguna casualidad

Bueno si uso ShfileOperation conoces tu alguna manera mas limpia de hacer esto que explicaba, ya que luce poco hacer un programa y que cuando vaya a borrar saque una ventana aprte. Hubiese querido mostrar dentro del mismo el progreso de borrado. Sabes al menos otra funcion con la cual borrar sin que se muestre la ventana del shift del. pero recuerda todo esto es para hcerlo por la red. Te agradezcon mucho tu repuesta un saludo.
Responder Con Cita
  #4  
Antiguo 01-02-2008
Avatar de ixMike
ixMike ixMike is offline
Miembro
 
Registrado: Feb 2004
Posts: 1.151
Poder: 16
ixMike Va por buen camino
Bueno, si bien es cierto que nunca he trabajado en red, creo que la función DeleteFile puede borrar archivos en red, y donde estén.

Claro que, para borrar un directorio completo, viene más cómodo SHFileOperation, pero no tengo ni idea de cómo hacer que el progreso se haga dentro de tu ventana (creo que si se puede es cosa difícil).

Lo que también podrías hacer es un procedimiento que recorra todo el directorio que quieres borrar (encontrando subdirectorios y archivos) e ir borrando uno a uno, así puedes poner la opción de cancelar.

Queda a tu elección. De todas formas, cancelar el proceso de borrardo... no suele pasar que el usuario se arrepienta de la acción mientras se está llevando acabo, y aunque así sea, ya sería tarde, pues parte de los archivos ya se han borrado


Salu2.
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
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
Parar un hilo de ejecución deivi Varios 6 21-11-2006 14:36:49
Parar ejecucion en asp joel20 .NET 4 20-04-2006 12:44:30
parar bucle Cosgaya Varios 11 11-02-2006 17:01:56
Como parar un programa en ejecucion??? damian2000 Varios 8 20-05-2004 02:56:26
parar un evento empty Varios 7 29-04-2004 14:08:17


La franja horaria es GMT +2. Ahora son las 22:38:00.


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