HERM/DATOS/MBD2DBF.DFB
2021-09-12 20:06:36 +02:00

270 lines
6.1 KiB
Plaintext
Raw Permalink Blame History

#include <conio.h>
#include <ctype.h>
#include <string.h>
#include <stdlib.h>
#include <stdio.h>
#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( "hermanas.txt", "r" ) ) != NULL )
{
Dbf.AbrirReg( "hermanas.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 );
// Direcci¢n
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 );
// Poblaci¢n
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 );
// Antig<69>edad
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');
}
// a¤o-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 posici¢n
obten_linea( file, buffer );
strncpy( Hermanos.Posicion, buffer, 15 );
Hermanos.Posicion[16] = '\0';
// printf("\n%s", buffer );
// Posici¢n
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 );
// Bolet¡n
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], "" );
}