[C con Clase] [Bulk] Re: Añadir registros a tabla dbf DBaseIII desde C

ZeLion Zelion_cracking en yahoo.es
Jue Oct 18 09:13:46 CEST 2007


Hola de nuevo luis.
Vale, lo que quieres es quitar el 1A del fichero.
Bien lo que ocurre es que estas abriendo el fichero desde el final para
añadir, entonces una opcion es:

// Crear un  fichero de lectura y escritura para añadir, con lo que el
puntero va al principio del fichero y lo movemos al final -1 para añadir,
con lo que escribira sobre el byte '1A'

fichero = fopen ("dbase3.dbf", "rb+");

--------- CODIGO ------------------------------
//   GUARDAR  CAMPOS
	FILE *fichero;
	char buffer[1000]="datos para almacenar\ndatos para almacenar";	//
puntero a los datos
	int bytes = 10;	// Cantidad de bytes a escribir

	fichero = fopen ("dbase3.dbf", "rb+");

	if (fichero==NULL)
	{
		printf("\nNo se puede abrir el archivo");
		return -1;
	}

	long int final;
	
	fseek( fichero, -1L, SEEK_END ); // posicionar al final -1 del
fichero

	final = ftell( fichero );	// Aqui tenemos la posision para
comprobar si se quiere

	fwrite (buffer, 1, bytes, fichero);		// Escribir

	fclose(fichero);

Espero que te sirva de ayuda.

.: ZeLion :.
>-----Mensaje original-----
>De: cconclase-bounces en listas.conclase.net [mailto:cconclase-
>bounces en listas.conclase.net] En nombre de luis
>Enviado el: miércoles, 17 de octubre de 2007 22:02
>Para: cconclase en listas.conclase.net
>Asunto: [Bulk] Re: [C con Clase] Añadir registros a tabla dbf DBaseIII
>desde C
>
>En primer lugar muchas gracias por responder.
>
>He probado lo que me has indicado y no es mala idea
>pero no me soluciona el problema.
>
>Cuando hago un volcado del contenido del archivo dbf
>(ver imagen, http://es.geocities.com/yakooes/volcado.GIF el cuadrito
>punteado que contiene 1A), el byte de fin de archivo en
> hexadecimal, sigue estando en la misma posicion que antes de introducir el
>nuevo registro.
>
>Por lo tango, el nuevo texto sí existe pero no se muestra al
>abrir la tabla con el visualizador de dbf DBF Visual Viewer.
>
>El problema está en cómo se modifica el caracter o byte de
>fin de fichero, el cual impide que se muestre el contenido.
>
>He aplicado el siguiente codigo para introducir los datos:
>
>char buffer[100]="datos para almacenar";
>
>int bytes = 20;
>
>pa = fopen("dbase3.dbf", "ab");
>
>if(pa==NULL)
>{
>   printf("\nNo se puede abrir el archivo");
>   return 1;
>}
>
>fwrite(buffer, 1, bytes, pa);
>
>Mas o menos como me indicabas.
>Pero bueno, el problema está en ese caracter o byte de fin de fichero.
>Luego tendré que ajustar el contenido introducido a cada campo,
>porque utilizo 3 campos en la tabla. Esto tendré que resolverlo despues.
>
>gracias y salu2
>_______________________________________________
>Lista de correo Cconclase Cconclase en listas.conclase.net
>http://listas.conclase.net/mailman/listinfo/cconclase_listas.conclase.net
>Bajas: http://listas.conclase.net/index.php?gid=2&mnu=FAQ





Más información sobre la lista de distribución Cconclase