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
|
||||
|
||||
ofstream o rename fallan
Bueno la verdad es que no se me ocurria otro titulo. El caso es que estoy liado siguiendo aprendiendo cosas y estoy creando una mini clase la cual hace cosas basicas con archivos secuenciales pero el metodo Delete de mi clase me da problemas. Este es el codigo:
Código PHP:
¿Pueden ayudarme? |
#2
|
||||
|
||||
Hola.
Desconozco el por que del cálculo de los bloques para borrar un registro de manera secuencial. Pero, básicamente un borrado de ese tipo consiste en crear un archivo temporal, para luego recorrer el archivo original e ir copiando al temporal los elementos diferentes al que debe ser borrado. Por último se borra el archivo original y se renombra al archivo temporal como el original. Básicamente sería algo similar a este ejemplo: Código PHP:
Código PHP:
Saludos
__________________
Daniel Didriksen Guía de estilo - Uso de las etiquetas - La otra guía de estilo .... |
#3
|
||||
|
||||
Lo de los bloques es para no tener que ir copiando estructura por estructura, o sea obtengo la posición del dato que quiero buscar y a partir de esa dirección obtengo el número de bytes que hay desde el inicio hasta esa posición y lo mismo para lo que hay después. Con eso hago solo dos write y me ahorro tener que recorrer todo el archivo leyendo y escribiendo dato a dato.
Lo que dices de "hacerlo de forma aleatoria" ¿que es eso? |
#4
|
||||
|
||||
__________________
Daniel Didriksen Guía de estilo - Uso de las etiquetas - La otra guía de estilo .... |
#5
|
||||
|
||||
Ya entendí aunque tiene algún que otro inconveniente ya que si quiero eliminar un id determinado y no están ordenados ya no sirve este método y si lo están pero no son todos correlativos también habría problemas. Para usarlo tendría que mostrar todos los registros y poner por ejemplo el contador de registros leídos delante de cada registro usando dicho contador para elegir el registro a borrar.
Sigo sin ver el porque no se crea el archivo auxiliar. |
#6
|
||||
|
||||
Lamentablemente no puedo probar tu código por que carezco de algunas funciones y datos para hacerlo, pero si revisas el código del mensaje #2, verás que hace sin problemas esa taréa.
Es decir:
Saludos
__________________
Daniel Didriksen Guía de estilo - Uso de las etiquetas - La otra guía de estilo .... |
#7
|
||||
|
||||
Misterios de Windows. Cambié el nombre del archivo auxiliar de "aux.dat" a "temp.dat" y ya funciona. Sólo falla con el nombre de archivo "aux.dat". Eso me da que pensar que ha fallado algo en windows y al crear el archivo no permite hacerlo porque intente sobre escribirlo y al no existir pues... no se, son especulaciones. Luego cuando llegue intentare mover todo a otra carpeta y ver que pasa.
|
Herramientas | Buscar en Tema |
Desplegado | |
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
Conexiones que fallan con W7 64 y funcionan con WXP SP3 | gorsan | Conexión con bases de datos | 4 | 11-03-2015 14:45:45 |
rename() y remove() | fedee | C++ Builder | 2 | 31-05-2011 21:41:39 |
Problema con flujo OFSTREAM | nax | C++ Builder | 4 | 23-09-2005 01:13:23 |
|