#include #include #include #include #include #include "..\herm.h" #include "..\..\libs\bdatos\bdatos.hh" HermStruct Hermanos; BDatos Dbf; void RellenaStructura(FILE *file); void obten_linea(FILE *file, char *buf); void PreparaNuevoRegistro(void); void main( void ) { long registro = 0; FILE *origen; printf( "\nConvertidor de fichero: PROCESANDO..." ); if ( (origen = fopen( "hermanos.txt", "r" ) ) != NULL ) { Dbf.AbrirReg( "hermanos.dbf", sizeof( HermStruct ) ); do { RellenaStructura(origen); // La estructura ya esta cargada, asi que.... Dbf.InsReg( (void *)&Hermanos, Dbf.Registros(), ARRIBA ); registro++; gotoxy( 1,1 ); printf( "%ld", registro ); }while( !feof(origen) ); Dbf.CerrarReg(); fclose( origen ); } else printf( "\nError abriendo el origen" ); } void RellenaStructura(FILE *file) { char buffer[250]; // este es el orden del archivo: PreparaNuevoRegistro(); // Numero obten_linea( file, buffer ); Hermanos.NHno = atol( buffer ); // printf("\nNumero: %s", buffer ); // Nombre obten_linea( file, buffer ); buffer[0] = toupper(buffer[0]); strncpy( Hermanos.Nombre, buffer, 15 ); Hermanos.Nombre[16] = '\0'; // printf("\n%s", buffer ); // Apellido1 obten_linea( file, buffer ); buffer[0] = toupper(buffer[0]); strncpy( Hermanos.Apellido1, buffer, 15 ); Hermanos.Apellido1[16] = '\0'; // printf("\n%s", buffer ); // Apellido2 obten_linea( file, buffer ); buffer[0] = toupper(buffer[0]); strncpy( Hermanos.Apellido2, buffer, 15 ); Hermanos.Apellido2[16] = '\0'; // printf("\n%s", buffer ); // Direccin obten_linea( file, buffer ); buffer[0] = toupper(buffer[0]); strncpy ( Hermanos.Direccion, buffer, 30 ); Hermanos.Direccion[30] = '\0'; sprintf( Hermanos.Num, "" ); sprintf( Hermanos.Piso, "" ); // printf("\n%s", buffer ); // CP obten_linea( file, buffer ); Hermanos.CodP = atol ( buffer ); // printf("\n%s", buffer ); // Poblacin obten_linea( file, buffer ); buffer[0] = toupper(buffer[0]); strncpy( Hermanos.Poblacion, buffer, 15 ); Hermanos.Poblacion[16] = '\0'; // printf("\n%s", buffer ); // Provincia obten_linea( file, buffer ); buffer[0] = toupper(buffer[0]); strncpy( Hermanos.Provincia, buffer, 15 ); Hermanos.Provincia[16] = '\0'; // printf("\n%s", buffer ); // Telefono1 obten_linea( file, buffer ); buffer[0] = toupper(buffer[0]); strncpy( Hermanos.Telefono1, buffer, 15 ); Hermanos.Telefono1[16] = '\0'; // printf("\n%s", buffer ); // Telefono2 obten_linea( file, buffer ); buffer[0] = toupper(buffer[0]); strncpy( Hermanos.Telefono2, buffer, 15 ); Hermanos.Telefono2[16] = '\0'; // printf("\n%s", buffer ); // Antigedad obten_linea( file, buffer ); if ( buffer[0] != '0' ) { Hermanos.Antig.da_year = (buffer[0]-'0')*1000 + (buffer[1]-'0')*100 + (buffer[2]-'0')*10 + (buffer[3]-'0'); Hermanos.Antig.da_mon = (buffer[5]-'0')*10 + (buffer[6]-'0'); Hermanos.Antig.da_day = (buffer[8]-'0')*10 + (buffer[9]-'0'); } // ao-mes-dia // sprintf( Hermanos.Nombre, "%15s", buffer ); // printf("\n%s", buffer ); // Fecha de nacimiento obten_linea( file, buffer ); // sprintf( Hermanos.Nombre, "%15s", buffer ); if ( buffer[0] != '0' ) { Hermanos.FechaN.da_year = (buffer[0]-'0')*1000 + (buffer[1]-'0')*100 + (buffer[2]-'0')*10 + (buffer[3]-'0'); Hermanos.FechaN.da_mon = (buffer[5]-'0')*10 + (buffer[6]-'0'); Hermanos.FechaN.da_day = (buffer[8]-'0')*10 + (buffer[9]-'0'); } // Reserva obten_linea( file, buffer ); if ( buffer[0] == '1' ) Hermanos.Varios.Reserva = 1; else Hermanos.Varios.Reserva = 0; // printf("\n%s", buffer ); // Ultima posicin obten_linea( file, buffer ); strncpy( Hermanos.Posicion, buffer, 15 ); Hermanos.Posicion[16] = '\0'; // printf("\n%s", buffer ); // Posicin obten_linea( file, buffer ); Hermanos.Insignia = 0; // printf("\n%s", buffer ); // Cuota familiar obten_linea( file, buffer ); if ( buffer[0] == '1' ) Hermanos.Varios.CuotaFam = 1; else Hermanos.Varios.CuotaFam = 0; // printf("\n%s", buffer ); // Boletn obten_linea( file, buffer ); if ( buffer[0] == '1' ) Hermanos.Varios.Notific = 1; else Hermanos.Varios.Notific = 0; // printf("\n%s", buffer ); // Vota obten_linea( file, buffer ); if ( buffer[0] == '1' ) Hermanos.Varios.PuedVotar = 1; else Hermanos.Varios.PuedVotar = 0; // printf("\n%s", buffer ); // Sexo obten_linea( file, buffer ); // Salto de Linea obten_linea( file, buffer ); }; void obten_linea(FILE *file, char *buf) { int c; char *buffer; buffer = buf; *buffer = '\0'; // mientras no sea un salto de linea while ( ( c = fgetc(file) ) != '\n' && c != EOF ) *(buffer++) = (char)c; *(buffer++) = '\0'; }; void PreparaNuevoRegistro(void) { int i; Hermanos.NHno = 0; strcpy( Hermanos.Nombre, "" ); strcpy( Hermanos.Apellido1, "" ); strcpy( Hermanos.Apellido2, "" ); strcpy( Hermanos.Direccion, "" ); strcpy( Hermanos.Num, "" ); strcpy( Hermanos.Piso, "" ); Hermanos.CodP = 0; strcpy( Hermanos.Poblacion, "" ); strcpy( Hermanos.Provincia, "" ); Hermanos.FechaN.da_day = 0; Hermanos.FechaN.da_mon = 0; Hermanos.FechaN.da_year = 0; Hermanos.Antig.da_day = 0; Hermanos.Antig.da_mon = 0; Hermanos.Antig.da_year = 0; Hermanos.Varios.Reserva = 0; strcpy( Hermanos.Posicion, "" ); Hermanos.Insignia = 0; strcpy( Hermanos.Telefono1, "" ); strcpy( Hermanos.Telefono2, "" ); Hermanos.Varios.CuotaFam = 0; Hermanos.Varios.Notific = 0; Hermanos.Varios.PuedVotar = 0; Hermanos.Varios.RealPenit = 0; Hermanos.Varios.TunicaHd = 0; Hermanos.Varios.CtoVirgen = 0; // Aqui vaciamos el comentario for ( i=0; i<6; i++ ) strcpy( Hermanos.Comentario[i], "" ); }