Ver Mensaje Individual
  #20  
Antiguo 16-01-2007
Avatar de rretamar
[rretamar] rretamar is offline
Miembro Premium
 
Registrado: ago 2006
Ubicación: San Francisco, Córdoba, Argentina
Posts: 1.168
Reputación: 20
rretamar Va camino a la famarretamar Va camino a la fama
Cita:
Empezado por dec
Pero en este caso no se trata de Windows, se trata de mi programa. Y mi programa quiere saber si existe un archivo en la ruta "E:\archivo.bmp" y no le interesa para nada la caché y aquí Windows no tendría que contradecirme y decirme si existe el archivo o no existe el archivo en no sé qué caché: mi pregunta es simple, ¿existe el archivo "E:\archivo.bmp"? Y Windows tiene que limitarse a contestar a esa pregunta.
Windows te dice que el archivo existe, pero no lo lee de la unidad de CD, sino de la memoria. Es transparente para las aplicaciones, como bien lo muestra el ejemplo de copiar archivos que puse en el programa anterior.

Cita:
Empezado por dec
Tú no puedes controlar que Windows use no sé qué caché en sus tareas, pero, sí que puedes controlar que en tu programa se inquiera la existencia de un archivo en determinada ruta: no en ninguna caché ni en otro sitio distinto, exactamente en la ruta que le indicas. Y aquí vuelvo otra vez a la documentación de la función "FileExists", por ejemplo: en ningún lado se menciona que retornará "True" si el archivo solicitado existe en no sé qué caché. Es decir, esta función retornará "True" si el archivo "E:\archivo.bmp" existe y "False" en cualquier otro caso.

Ahora bien, ya me atrevo a preguntar... ¿tú lo has comprobado? Es decir, realmente la función "FileExists" te retorna "True" para un archivo "E:\archivo.bmp" que no existe en el cederrón, porque el mismo cederrón no se encuentre ya en el dispositivo sin ir más lejos? Porque yo me apuesto algo (je, je, je...) que si el cederrón no está en la unidad la función "FileExists" no puede retornar "True" en modo alguno si se le pasa como parámetro la ruta de un archivo que haya de estar en dicha unidad/cederrón.
El problema es que no solamente necesito que el archivo exista (fileexists), sino que quiero leer su contenido, para compararlo con el que está en el disco rígido y ver SI LA ESCRITURA EN EL CD SE REALIZO CORRECTAMENTE.

Los pasos que hace mi programa son:

1) Hay unos archivos en una carpeta del disco rígido.

2) A esos archivos los grabo en la unidad de CD, con el componente Magicburner.

En este momento, Windows guarda una copia de los datos escritos en la cache de disco, como hace con todas las unidades. Eso lo hace en forma transparente.

3) Al terminar la grabación, leo con mi programa la unidad de CD y comparo el contenido (archivo por archivo) con los que están en el disco rígido. De esa forma debería poder comprobar que se grabaron correctamente en el CD, o sea QUE SON LEGIBLES DESDE EL CD.

Es el paso 3 el que no está funcionando, por culpa de la cache que windows implementa en las unidades.

Y ahí es donde aparece el problema, porque al empezar a leerlos la unidad de CD ni se mueve, sin embargo los puedo leer, porque están cacheados en memoria. Y al no poderlos leer fisicamente desde el CD, entonces no puedo saber si la grabación se realizó correctamente.

Saludos , Tux
Responder Con Cita