Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   C++ Builder (https://www.clubdelphi.com/foros/forumdisplay.php?f=13)
-   -   Dudas sobre solapamiento de acciones con archivos (https://www.clubdelphi.com/foros/showthread.php?t=87755)

NEG1414 21-02-2015 10:27:50

Dudas sobre solapamiento de acciones con archivos
 
Buenas...

Estoy trabajando con archivos y me surgen una serie de dudas...

Creo un archivo que los usuarios utilizan para recabar cierta informacion, los datos de este archivo son dinamicos, y cada cierto tiempo, como administrador modifico los datos , es aqui donde surge mi duda, si los usuarios puede seguir accediendo al archivo, ¿como les afectaria un acceso mientras yo estoy modificando los datos y que solucion tengo..?

My segunda duda es : Si recorro un directorio buscando los archivos con cierta extension, de la forma

Código:

Hay = findfirst(("*.*").c_str(),&ffblk,0);

while (!Hay)
 {
    if(strstr(ffblk.ff_name,".xx"))
      {
          Operar();
      }

    Hay = findnext(&&ffblk);
 }

suponiendo que exista uno solo, que lo localize, que opere con el y mientras se añade otro/s archivo/s al directorio ...¿ al seguir la busqueda SIEMPRE los localizara?

Espero Haberme Explicado Bien

Gracias

escafandra 22-02-2015 00:29:16

Cita:

Empezado por NEG1414 (Mensaje 489111)
Creo un archivo que los usuarios utilizan para recabar cierta informacion, los datos de este archivo son dinamicos, y cada cierto tiempo, como administrador modifico los datos , es aqui donde surge mi duda, si los usuarios puede seguir accediendo al archivo, ¿como les afectaria un acceso mientras yo estoy modificando los datos y que solucion tengo..?

Puedes abrirlos de forma no compartida, así evitas que un usuario te lo abra mientras lo modificas.

Cita:

Empezado por NEG1414 (Mensaje 489111)
My segunda duda es : Si recorro un directorio buscando los archivos con cierta extension, de la forma

Código:

Hay = findfirst(("*.*").c_str(),&ffblk,0);

while (!Hay)
 {
    if(strstr(ffblk.ff_name,".xx"))
      {
          Operar();
      }

    Hay = findnext(&&ffblk);
 }

suponiendo que exista uno solo, que lo localize, que opere con el y mientras se añade otro/s archivo/s al directorio ...¿ al seguir la busqueda SIEMPRE los localizara?

No localizará los archivos nuevos, pero puedes monitorizar el Shell para detectar cuando aparecen nuevos archivos y recomenzar tu búsqueda. Aquí tienes un ejemplo de monitor de Shell.

Saludos.

NEG1414 22-02-2015 13:46:00

Muchas gracias por contestar....

Cita:

Puedes abrirlos de forma no compartida, así evitas que un usuario te lo abra mientras lo modificas.
Realmente los usuarios no abriran el archivo mientras lo modifico, lo que haran sera descargarlo, supongo que el problema sera el mismo por lo cual, antes de realizar las modificaciones, cambiare los permisos del archivo que restaurare al finalizar la modificacion.

Cita:

No localizará los archivos nuevos, pero puedes monitorizar el Shell para detectar cuando aparecen nuevos archivos y recomenzar tu búsqueda. Aquí tienes un ejemplo de monitor de Shell.
Dado que no detectara los archivos nuevos, y en mi aplicacion el archivo localizado sera borrado una vez se halla trabajado con èl, voy a optar por reiniciar la busqueda de nuevo una vez eliminado, por si se han incluido mas archivos.

Lo del monitor de Shell se sale.. seguro que lo utilizare en mis aplicaciones..

Gracias Otra vez.


La franja horaria es GMT +2. Ahora son las 12:02:04.

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