Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Hacer un registro de las Copias a dispositivos USB (https://www.clubdelphi.com/foros/showthread.php?t=93531)

JoAnCa 29-10-2018 16:52:35

Hacer un registro de las Copias a dispositivos USB
 
Hola a todos
Pues me pidieron hacer un software que monitorice todas las copias de archivos que se hagan a cualquier dispositivo USB, para tener el control de la cantidad de archivos que se copian diariamente y en cuantos dispositivos USB.

Este registro se guardara en una base de datos, donde necesita los siguientes datos:
- Nombre del Dispositivo
- Capacidad
- Fecha de insertado
- Lista de los archivos copiados
* Nombre del archivo
* Ruta desde donde se copio

Ya tengo como detectar cuando se inserta un dispositivo USB, y obtener su nombre, ruta y capacidad.
Tambien en el foro encontré como monitorizar "una ruta" para saber lo que se copia, borra, etc.

El problema lo tengo, en que no se como implementar el registro de copias cuando hay mas de un dispositivo insertado y copiandose cosas diferentes.

En el caso de que sea un solo dispositivo el que se inserta en un dia, no me parece complicado.
El problema esta cuando se inserta mas de uno a la vez, o el mismo varias veces en el dia, como enviar a la BD los archivos que se copian al dispositivo correcto.
Es decir, si el disp. se inserto varias veces, que cada copia sea la del momento en que se inserto, y si es a otro disp. como identificarlo en la BD si su nombre coincide con el de otro.

Me podrian dar alguna idea de como implementar esto?

Neftali [Germán.Estévez] 30-10-2018 15:08:28

Cita:

Empezado por JoAnCa (Mensaje 529317)
El problema lo tengo, en que no se como implementar el registro de copias cuando hay mas de un dispositivo insertado y copiandose cosas diferentes.

Al final lo único que diferencia los N dispositivos que puedan estar conectados (a nivel de copiar ficheros) es la unidad que le ha asignado el sistema (y el identificativo de cada USB). Puedes tener perfectamente 2 dispositivos con la misma carpeta c:\Datos a los que se esté copiando el mismo fichero al mismo tiempo. Por lo tanto en la Base de Datos no basta con guardar el path destino, sino que además debes asociar la letra (y el ID del dispositivo).

Cita:

Empezado por JoAnCa (Mensaje 529317)
Es decir, si el disp. se inserto varias veces, que cada copia sea la del momento en que se inserto, y si es a otro disp. como identificarlo en la BD si su nombre coincide con el de otro.

Deberás guardar la fecha en que se realizó la operación y tal y como he comentado antes in ID del dispositivo insertado. Sea el número de serie, nombre, fabricante,...

Ten en cuenta que pudes tener un HUB con 3 dispositivos conectados al mismo puerto y debes saber distinguir sobre cual de ellos se hare la copia (volvemos à la letra asignada a cada dispositivo).

jairo10 30-10-2018 23:37:51

Esta interesante el tema para llevar un monitoreo

JoAnCa 31-10-2018 13:21:20

Quizas no explique bien mi duda, o no completamente. Lo explico mejor paso a paso como lo tengo pensado

Se detecta la insercion del 1er disp. usb (E:\), comienzo el monitoreo de E: que se lo paso como parametro al componente que hace el monitoreo, y guardo en la BD

Se detecta la insercion del 2do disp. usb (F:\), esto mientras E: no ha terminado, comienzo el monitoreo de F: con el componente de monitoreo ..., peeero aqui es donde puede surgir el problema que temo, al comenzar a monitorear F:, entonces dejara de monitorear E: ?

Despues de analizar mejor el problema, me parece que si uso un hilo por cada dispositivo que se inserte, se solucionaria el problema?

Nunca he trabajado con hilos, tendre que comenzar a estudiarlos. No recuerdo bien si existe algun componente para el uso de threads, esto me facilitaria el trabajo

Neftali [Germán.Estévez] 31-10-2018 16:05:00

Cita:

Empezado por JoAnCa (Mensaje 529339)
..., peeero aqui es donde puede surgir el problema que temo, al comenzar a monitorear F:, entonces dejara de monitorear E: ?


No explicas cómo vas a realizar el monitoreo, si utilizando algún componente de los que existen (RxLib o JVCL tienen alguno) o mediante la API de Windows.
No recuerdo si el componente permite añadir una única ruta o varias. En todo caso, si el componente sólo permite 1 ruta (path) bastaría con que crearas varios componentes en ejecución (uno cada vez que empiezas a monitorizar una ruta).



No creo que sea necesario que lo hagas en hilos.

Neftali [Germán.Estévez] 31-10-2018 16:06:39

Acabo de revisar el componente de las JVCL y en este caso un único componente permite que le añadas varios paths de "monitorización". Así que sólo con un único componente deberías poder hacerlo.



bucanero 31-10-2018 16:51:46

Hola a todos

revisa este enlace, hay un programa con su correspondiente código fuente que hace el monitoreo de una carpeta con sus correspondientes subcarpetas creando un logs de todos los cambios que se realizan tanto a nivel de ficheros como de carpetas.

http://forum.codecall.net/topic/7631...r-for-changes/

un saludo

JoAnCa 31-10-2018 17:52:35

Cita:

Empezado por Neftali [Germán.Estévez] (Mensaje 529341)
No explicas cómo vas a realizar el monitoreo, si utilizando algún componente de los que existen (RxLib o JVCL tienen alguno) o mediante la API de Windows.
No recuerdo si el componente permite añadir una única ruta o varias. En todo caso, si el componente sólo permite 1 ruta (path) bastaría con que crearas varios componentes en ejecución (uno cada vez que empiezas a monitorizar una ruta).


No creo que sea necesario que lo hagas en hilos.




Estaba usando TMitec_DiskMonitor que permite una sola ruta, pero ya que me sugieres el de la JCVL, probare cambiando de componente


La franja horaria es GMT +2. Ahora son las 21:47:22.

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