FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
Eliminar registro en archivo binario
Por si fuera poco, la conspiracion de los archivos contra mi sigue! :neurotico
Ahora tengo el caso de eliminar un registro de un archivo. Para esto, hago uso de un archivo auxiliar donde ire copiando todos aquellos registros del base que NO sean el que deseo eliminar. Se supone, que luego de hacer la copia anterior debo, eliminar el archivo original o renombrarlo. es decir, colocarle al auxiliar el nombre del base. He probado con las funciones, rename & remove, pero no me han funcionado :borracho: por ser novata en este compilador, no se si estas funciones no puedan ser utilizadas en C++ al igual que en C. Buscando en San Google, he encontrado tambien las funciones: RenameFile & MoveFile, pero tampoco me han funcionado. Por lo que quisiera saber, si existen (supongo que si) y cuales son las funciones que permiten renombrar y/o eliminar un archivo. De igual manera les coloco el codigo:stress: Código:
//ELIMINAR: elimina una estacion void estaciones::eliminar(struct_estacion esta_actual) { //abro archivo binario "ORIGINAL" FILE *ap_b=NULL; ap_b=fopen("estacion_b.dat","rb"); //abro archivo binario "AUXILIAR" FILE *aux=NULL; aux=fopen("auxi.dat","wb"); if (ap_b!=NULL) { struct_estacion tmp; int xx, num_reg, cont; fseek(ap_b,0,SEEK_END); xx=ftell(ap_b); num_reg=xx/(sizeof(struct_estacion)); //leer del archivo y comparar for (cont=0;cont<=num_reg;cont++) { fseek(ap_b,cont*sizeof(struct_estacion),SEEK_SET); fread(&tmp,sizeof(struct_estacion),1,ap_b); int comparacion_cad; comparacion_cad=strcmp(tmp.nombre,esta_actual.nombre); //si NO tiene el mismo nombre al introducido a eliminar //entonces copialo al archivo auxiliar if (comparacion_cad!=0) { fwrite(&tmp,sizeof(struct_estacion),1,aux); } } fclose(ap_b); fclose(aux); //elimino el ahora viejo archivo de estaciones // DeleteFile("estacion_b.dat"); // remove("estacion_b.dat"); //renombrar el archivo auxiliar // RenameFile("auxi.dat","estacion_b.dat"); // rename("auxi.dat","estacion_b.dat"); } }; Esperando su respuesta! :-) Gracias de antemano :-) |
#2
|
|||
|
|||
Tal vez sea un poco más lento e ineficiente, pero lo que podrías hacer es copiar el archivo original (estacion_b.dat), hacer las modificaciones en el auxiliar y copiar nuevamente el resultado en estacion_b.dat.
Se que no parece una buena respuesta, pero puede servir mientras encuentras cómo eliminar archivos desde tu aplicación. Saludos! |
#3
|
|||
|
|||
Mmm bueno... tienes razon con lo de ineficiente... pero es una posible solución! sobretodo tomando en consideracion el poco tiempo que tengo!
Gracias! de Verdad!! |
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
Modificar registro en archivo binario | tamarinda | C++ Builder | 3 | 06-03-2008 21:01:20 |
Bloquear registro en fichero binario | jonmendi | API de Windows | 3 | 13-11-2007 17:16:31 |
Cargar array of char de un archivo binario | JosepZ | Varios | 9 | 12-11-2007 23:28:16 |
Eliminar registro de un .mdb con ADO | ¥0n1 | Conexión con bases de datos | 2 | 07-11-2007 11:29:12 |
Registro con valor BINARIO !!! | Ledian_Fdez | Varios | 1 | 07-06-2007 00:25:58 |
|