Programación General > C++ Builder
Problema Copiando Ficheros
Eternal Idol:
--- Cita de: "Ithilien" --- Pues raro es, porque era exactamente el mismo código para todos los archivos. Metí los paths en dos pilas ( una para los ficheros de entrada y otra para los ficheros de salida ) y apliqué un while ( !pila.empty() ){ ... } y luego el código que viste asi que no sé que pasaba. Yo diría que el código no estaba mal. Y lo que hacía el programa es solo copiarme el contenido del ultimo fichero cuyo path metía en último lugar en la pila, esto es, el primero que sacaba de ésta. Para los demás, solo creaba los archivos, pero vacíos.
--- Fin de la cita ---
Si el codigo hubiera estado bien hubiera funcionado ...
Ithilien:
Pues te invito a que analices el código siguiente:
--- Código: Text --- stack<char *> originales;stack<char *> copias;ifstream fi;ofstream fo;char *buffer;int leidos; originales.push("web\\archivo1.php");copias.push("C:\\www\\archivo1.php"); originales.push("web\\archivo2.php");copias.push("C:\\www\\archivo2.php"); originales.push("web\\archivo3.php");copias.push("C:\\www\\archivo3.php"); originales.push("web\\archivo4.php");copias.push("C:\\www\\archivo4.php"); buffer = new char[4096]; while ( !originales.empty() ){ fi.open(originales.top()); fo.open(copias.top()); do{ fi.read( buffer, 4096 ); leidos = fi.gcount(); fo.write( buffer, leidos ); }while( leidos > 0 ); origianeles.pop(); copias.pop(); fi.close(); fo.close();} delete []buffer;
Si encuentras el error, te agradecería que me indicaras donde está.
Gracias!
Eternal Idol:
Lo encontre despues de depurar un rato la STL, siendo sincero no es mi fuerte ya que no se usa en modo Kernel en lo absoluto. Es probable que haya maneras mas correctas de hacerlo pero el punto es que despues de la primera lectura se marca un flag de estado con un valor de error y, esto es algo que no me cabe en la cabeza que pase, se arrastra en el stream pese a hacer close y open posteriormente ...
Poniendo un fi.clear(); antes de cerrar o despues de abrir se soluciona el problema.
Ithilien:
Madre mía! Me parece increible...bueno, como nota positiva, todos los días se aprende algo, ¡y vaya qué algo!
Te doy las gracias por molestarte en mirar el código, pero pudiste ver como, el código parece correcto y un error te dejaa :unsure: ...
De nuevo gracias!
Eternal Idol:
--- Cita de: "Ithilien" --- Madre mía! Me parece increible...bueno, como nota positiva, todos los días se aprende algo, ¡y vaya qué algo!
Te doy las gracias por molestarte en mirar el código, pero pudiste ver como, el código parece correcto y un error te dejaa :unsure: ...
De nuevo gracias!
--- Fin de la cita ---
Es que no es del todo correcto ... en mi caso los archivos no tienen 4096 bytes por ejemplo ... en tu caso probablemente el flag se arrastre despues de unos cuantos read (del primer archivo) pero uno de los mismos al llegar al final del archivo y no tener este 4096 bytes pondra el estado a erroneo.
Navegación
[*] Página Anterior
Ir a la versión completa