PDA

Ver la Versión Completa : Detectar modificaciones de ficheros con delphi


Aslansh
01-08-2012, 00:49:11
Buenas tardes este es mi problema quiero hacer un programa que cuando se modifique un fichero me lo detecte automaticamente, e buscado codigos y ejemplos pero no me han servido, quisiera si es posible que me orientaran de algun componente que me muestre el nombre de el fichero modificado, y si fuera un codigo igual me serviria, es que ya no se donde buscar, y quiero encontrar algo que me notifique el nombre del fichero modificado en tiempo real, me hablaron del api de wiindows pero no me ha servido, y con el apisoft que esta muy bueno no realiza la operacion que quiero por favor necesito ayuda para acabar mi proyecto

Casimiro Notevi
01-08-2012, 01:01:55
he buscado codigos y ejemplos pero no me han servido, []
me hablaron del api de wiindows pero no me ha servido

¿Puedes especificar más?, ¿qué has buscado de códigos y ejemplos y no te ha servido y qué te hablaron de la api de windows y tampoco te ha servido?

roman
01-08-2012, 02:09:19
Tal como dice Casimiro, debes aclarar qué es lo que has intentado pues si no, ¿cómo sabemos si lo que te propongamos no está dentro de lo que ya intentaste?

De todas formas, te comento que existe el componente ShellChangeNotifier que viene con Delphi y que detecta algunos cambios, si bien no necesariamente el que deseas. Sin embargo, el compañero delphi.com.ar tiene su propia versión que es más completa. Puedes descargarla de Torry (http://www.torry.net/authorsmore.php?id=6057). En su descripción dice, entre muchas otras cosas, que detecta cuando:

An existing nonfolder item changes, but the item still exists and has not been renamed.

es decir, cuando un archivo cambia pero sin ser renombrado ni borrado.

Mira, a ver si te sirve.

// Saludos

maxinitto
03-08-2012, 03:41:05
Jeje es curioso lo he leído y tampoco comprendo si lo que quiere averiguar es, si cambia el contenido o el nombre...

maxinitto
03-08-2012, 03:44:00
Si se refiere al nombre se puede hacer alguna que otra cosilla... Así ahora mismo se me viene a la cabeza que la primera vez que cargue el programa almacene los nombres de los ficheros y/o directorios en un archivo de texto que el usuario quiera y que despues cada x tiempo vaya comprobando recursivamente esos ficheros para ver si sus tamaños y/o nombres, han cambiado... pero se puede mejorar.

Aslansh
04-09-2012, 23:12:44
me haria falta algun manual o ejemplo sobre shellChangeNotifier si pudieran enviarme un link donde pueda encontrar algo de este tema

Casimiro Notevi
04-09-2012, 23:14:44
Bienvenido a clubdelphi, ¿ya leiste nuestra guía de estilo (http://www.clubdelphi.com/foros/guiaestilo.php)?, gracias por tu colaboración :)

roman
04-09-2012, 23:17:29
¡Oh pues! O sea que los dos hilos de hoy eran repetición de éste. Vuelvo a cerrar el otro.

// Saludos

escafandra
04-09-2012, 23:41:56
me haria falta algun manual o ejemplo sobre shellChangeNotifier si pudieran enviarme un link donde pueda encontrar algo de este tema

Quizás este hilo: "escuchar fichero" (http://www.delphiaccess.com/forum/c-c-49/escuchar-fichero) y este otro: "Monitorizando el Shell sólo con la API" (http://www.delphiaccess.com/forum/trucos-y-consejos-16/monitorizando-el-shell-solo-con-la-api/) te sirvan de ayuda.

Saludos.

Aslansh
06-09-2012, 05:41:11
ya detecto cuando hay una modificcion en algun fichero ahora lo que me haria falta es saber el fichero que se modifco lo estoy haciendo con SHChangeNotify pero no me dice el fichero que ha sido modificado como podria hacerlo ya que en el eventoo on update dir solo me aparece el directorio donde se modifico algo me pudieran brindar algun codigo para esto

escafandra
06-09-2012, 08:36:49
Si has seguido atentamente el hilo que te enlacé "escuchar fichero" (http://www.delphiaccess.com/forum/c-c-49/escuchar-fichero), te habrás dado cuenta de que no tenemos un indicador que informe directamente de la modificación de un fichero pero si de la carpeta que lo contiene. Así que la estrategia puede ser la siguiente:

1.- Una vez saltada la alarma sabemos que en cierta carpeta algo cambió. Si no se trata de la carpeta donde tenemos el fichero a vigilar no hacemos nada.

2.- Si la carpeta que cambió es la nuestra... miramos la fecha de modificación del fichero que nos interesa. Previamente deberíamos conocer la fecha y al compararla con la que ahora obtenemos sabremos si ha cambiado. Puede interesarte este tema (http://www.delphiaccess.com/forum/trucos-y-consejos-16/conocer-la-fecha-de-creacion-de-un-fichero).

Si queremos mas precisión en la verificación, podemos comparar los Hash previo y actual del fichero, de esta manera sabemos rápidamente si hubo un cambio de contenido y no solamente de fecha. Aquí encontrarás un ejemplo para calcular el MD5 (http://www.delphiaccess.com/forum/ejercicios-practicos/terminatemd5_process-a-la-caza-de-un-virus) de un fichero.


Saludos.

Casimiro Notevi
06-09-2012, 10:24:44
Si tuviéramos un sistema de puntuación de respuestas, te votaría el máximo :)

escafandra
06-09-2012, 13:40:35
Si tuviéramos un sistema de puntuación de respuestas, te votaría el máximo :)
Gracias. :)


Saludos.

roman
06-09-2012, 17:09:46
Si tuviéramos un sistema de puntuación de respuestas, te votaría el máximo :)

Puedes aumentar su reputación,con la palomita de arriba de su mensaje :) Yo ya lo hice, aunque bien a bien, no sé dónde se ve la reputación de un usuario.

// Saludos

Casimiro Notevi
06-09-2012, 17:39:56
Sí, he usado esa opción, pero es lo que tú dices, no se ve, para saber si es un usuario con buena o mala reputación :)

roman
06-09-2012, 17:43:18
Creo que tiene que ver con el cuadrito verde, debajo del número de posts, pero al parecer todos vamos on distiguished road :eek:

// Saludos