Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Otros entornos y lenguajes > C++ Builder
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 05-03-2008
tamarinda tamarinda is offline
Registrado
 
Registrado: mar 2008
Posts: 4
Poder: 0
tamarinda Va por buen camino
Exclamation 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 :-)
Responder Con Cita
  #2  
Antiguo 06-03-2008
Antonioveneroso Antonioveneroso is offline
Miembro
 
Registrado: feb 2008
Posts: 30
Poder: 0
Antonioveneroso Va por buen camino
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!
Responder Con Cita
  #3  
Antiguo 06-03-2008
tamarinda tamarinda is offline
Registrado
 
Registrado: mar 2008
Posts: 4
Poder: 0
tamarinda Va por buen camino
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!!
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

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


La franja horaria es GMT +2. Ahora son las 09:47:29.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi