![]() |
![]() |
| Paypal | FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
|||||||
| Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Buscar | Temas de Hoy | Marcar Foros Como Leídos |
![]() |
|
|
Herramientas | Buscar en Tema | Desplegado |
|
|
|
#1
|
||||
|
||||
|
Hola,
A mí personalmente no me cansa en absoluto, pero, es que lo que dices no responde a mi inquietud. Si Windows utiliza una caché para copiar archivos desde un CD al disco duro, es decir, si la primera copia la hace desde el CD y sucesivas copias las hace a partir de su caché... es problema de Windows, y yo estaré contento de que lo haga lo más rápido posible así que todos contentos. 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. 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. |
|
#2
|
||||
|
||||
|
Yo creo compartir la inquietud de dec. El sistema de caché debe funcionar de forma tal que no haya errores, de lo contrario sería altamente ineficaz, porque no sólo interviene aquí, sino en muchas operaciones de disco. Ahora, esto lo digo desde mi lógica, pero como ya mencioné, sé nada acerca del asunto.
Aún así, pregunto: ¿qué te hace (rretamar), asegurar que va a fallar por estar leyendo del caché? Sé que no tiene mucho sentido lo que pregunto. Pero ¿no se podría hacer una prueba haciendo fallar a propósito la copia en unos cuantos bytes por ahí? Si la verificación, tal como se hace ahora, sigue diciendo que todo está bien, pues habremos concluido que en efecto es culpa del caché. // Saludos |
|
#3
|
||||
|
||||
|
Hola,
Yo propongo una prueba muuuuuuuuuuuuuuy sencilla. Graba en un cederrón un par de archivos y a continuación (quitando el cederrón de la unidad) usa la función "FileExists" para tratar de averiguar si dichos archivos están el cederrón. Si la función te devuelve "True"... me la corto, como suele decirse. ![]() |
|
#4
|
||||
|
||||
|
Yo no me la corto pero sí que concuerdo en la simplicidad de la prueba.
// Saludos |
|
#5
|
||||
|
||||
|
Cita:
Cita:
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 |
|
#6
|
||||
|
||||
|
Si saco el CD, Windows sabe que el medio no está presente y la funcion devuelve un error. Pero si lo vuelvo a insertar, Windows reconoce que es el mismo CD y como los datos aún están cacheados, me vuelve a leer la cache y no la unidad fisica.
Saludos, Tux |
|
#7
|
||||
|
||||
|
Hola,
Bueno. Tienes razón... la prueba de simple es un poco absurda, porque, ¿cómo podrías comprobar si existen los archivos en un cederrón si no está el cederrón en la unidad? Pero, es que en mi opinión para las funciones de lectura debería ser lo mismo: olvidemos "FileExists" (que yo mismo introduje en este Hilo), pero, ¿es que si utilizo una función "GetFileMd5('E:\archivo.bmp')" Windows va a poner en medio una caché? En el caso de que la pusiera... Windows debiera comprobar que primero existe el archivo en el cederrón, por no ir más lejos, porque bien podría poner la caché por medio para acelerar determinadas tareas como copiar archivos, por ejemplo, pero, si le pregunto específicamente por el MD5 de un archivo... de una ruta en concreto... no estaría nada bien que se me respondiera con el archivo de una caché... porque eso no es lo que yo quiero saber. No sé si alguien mencionó (creo que fue Román) que está bien que Windows use una caché cuando le sea menester para lo que le sea menester, pero, esta caché se tornaría ineficaz si se mete donde no la llaman, y yo creo que en el caso que nos ocupa nadie la llama... yo no quiero copiar archivos, por ejemplo, y la caché debería utilizarla Windows para este tipo de menesteres, pero no para cualquier cosa. No sé. Me da qué sé yo insistir más, porque, supongo que habrás hecho tus pruebas, pero, chico, es que no lo entiendo. |
|
#8
|
||||
|
||||
|
Cita:
Cita:
Cita:
Si reinicio la PC, obviamente la cache se borra y entonces sí mi programa realiza una lectura "real" del CD. Tambén ocurre si hago otras lecturas de otros CDs, lo que hace que el contenido del cache sea reemplazado por otro y al volver a insertar el CD recién grabado, ahí sí lo lee físicamente. Saludos, Tux ![]() |
|
#9
|
||||
|
||||
|
¿Y ya consideratse lo que te dije?
Haz una prueba alterando un poco los datos de un sólo archivo antes de grabarlo. ¿Qué pasa al hacer la comprobación? // Saludos |
![]() |
| Herramientas | Buscar en Tema |
| Desplegado | |
|
|
Temas Similares
|
||||
| Tema | Autor | Foro | Respuestas | Último mensaje |
| Como pasar datos de una hoja de Excel a Bases de Datos de Paradox | Goyo | OOP | 1 | 06-02-2007 01:57:20 |
| Añadir datos desde una base de datos a un TListBox | proyecto | Conexión con bases de datos | 1 | 21-11-2006 07:01:19 |
| Guardar en 1 base de datos SQL, datos procedentes de 2 tablas distintas | adaypr | C++ Builder | 1 | 05-09-2006 11:56:33 |
| Verificación de dni | luna | Varios | 4 | 29-05-2004 21:33:46 |
| Reto Para Expertos En Base De Datos Y Tipos De Datos.... (blob) | frankmch | Conexión con bases de datos | 2 | 08-09-2003 19:44:52 |
|