La Web del Programador: Comunidad de Programadores
 
    Pregunta:  60381 - COMO BUSCAR ARCHIVOS MOSTRANDO EL PROGRESO
Autor:  albe
Amigos, estoy programando un antivirus, y me hace mucha falta saber como puedo buscar archivos (de la forma más rapida y eficiente), y a la vez ir mostrando el progreso de la busqueda, tal y como hacen los antivirus.

Yo logre hacer esto ya, pero creo que de una forma muy ineficiente. Yo primero buscaba los archivos sin escanearlos, solo para saber cuantos habia y despues buscaba de nuevo todos los archivos y mediante unos calculos en un progressbar lograba mostrarle al usuario el estado de la busqueda. Como todos saben esto es super ineficiente porque:

1- Realizo 2 busquedas en vez de 1
2- El programa (antivirus), se demora al iniciar la busqueda a los ojos del usuario.

Me seria de muchisima ayuda que me ayudaran en esto amigos.

Gracias.....

  Respuesta:  Danilo Llerena
Primero te felicito por hacer un antivirus, no es nada facil, segundo con respecto a tu pregunta, un antivirus debe hacer una busqy¡ueda en toda la unidad seleccionada para esto yo haria lo siguiente =
Total := DiskSize(DA) - DiskFree(DA); esto me da el total de espacio en bytes que la unidad tiene ocupada, luego en la busqueda simplemente tomas el tamaño del archivo y calculas cuanto representa porcentualmente del total obtenido con la formula anterior y ese resultado es el incremento del progressbar, esto funciona para todo el disco, otra cosa es para una carpeta especifica, creo que en ese caso tu planteamiento es una buena opcion