Ver Mensaje Individual
  #2  
Antiguo 26-01-2023
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.293
Reputación: 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
Son dos cosas distintas, por un lado dices que a veces el procedimiento no funciona (a) y por otro lado cómo hacerlo más rápido (b).

a) En cuanto a que el procedimiento no funciona a veces, si revisas la ayuda de la función DeleteFile, verás que habla de:
"...If the file cannot be deleted or does not exist..."

Por lo tanto puede ser que el fichero exista en disco, pero no se pueda borrar por otros temas (por ejemplo, porque esté bloqueado). En ese caso no podrás borrarlo y sería el caso que tú comentas.

b) Lo segundo sería cómo hacerlo más eficiente y rápido. El código no está mal conceptualmente (en cuando a funcionamiento), se hace un recorrido y se borrar los registros y ficheros. Lo que sí es verdad es que las operaciones de disco son "lentas" en comparación con el resto.

Si necesitaras más velocidad lo siguiente podría ser utilizar Threads. En ese caso, podrías lanzar un thread para cada borrardo.
Se podría realizar el recorrido, borrar el registro y lanzar el thread para borrar los ficheros. En ese caso el programa no debería estar esperando a que acabara cada instrucción de borrado. Eso sí, tendrás que replantear la gestión de posibles errores.
__________________
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.

Última edición por Neftali [Germán.Estévez] fecha: 26-01-2023 a las 17:11:56.
Responder Con Cita