begin process at 2012 02 12 14:00:23
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Base de données

 > STRUCTURE DES FICHIERS DBF

STRUCTURE DES FICHIERS DBF


 Information sur la source

Note :
Aucune note
Catégorie :Base de données Classé sous :structure, fichier, DBF Niveau :Débutant Date de création :03/09/2008 Date de mise à jour :03/09/2008 11:54:29 Vu / téléchargé :6 158 / 201

Auteur : Stanel

Ecrire un message privé
Commentaire sur cette source (0)
Ajouter un commentaire et/ou une note

 Description

Pour chaque fichier DBF existant dans le dossier courrant, le programme fait un autre fichier, ayant meme nom et STR comme extension, qui contient code source C utilisable.

Source

  • //03-sep-2008 10:06:02
  • #include <dos.h>
  • #include <stdio.h>
  • #include <io.h>
  • #include <string.h>
  • #include <dir.h>
  • typedef unsigned short ushort;
  • typedef unsigned long ulong;
  • typedef unsigned char uchar;
  • #define O_BINARY 0x8000
  • #define O_RDONLY 1
  • struct date d;
  • ushort RCS,N,N1;
  • uchar nom_dbf[40];
  • uchar nom_str[40];
  • short nf;
  • FILE *fis;
  • ushort i,j,k;
  • uchar alfa[100];
  • struct DBF1
  • {
  • uchar version;
  • uchar aallzz[3];
  • ulong nart;
  • ushort lg_antet;
  • ushort RCS;
  • uchar rien[20];
  • } ant1;
  • struct DBF2
  • {
  • uchar nom[11];
  • uchar tip;
  • ushort depl;
  • ushort rien1;
  • uchar longueur;
  • uchar decimals;
  • uchar rien2[14];
  • } ant2;
  • struct ffblk a;
  • int I;
  • uchar man[1024];
  • uchar buf[BUFSIZ];
  • void main(void)
  • {
  • getdate(&d);
  • sprintf(man,"*.DBF");
  • I=findfirst(man,&a,0);
  • while(!I)
  • {
  • strcpy(nom_dbf,a.ff_name);
  • I=findnext(&a);
  • strcpy(nom_str,nom_dbf);
  • sprintf(nom_str+strlen(nom_str)-3,"str");
  • printf("\n%s ==> %s",nom_dbf,nom_str);
  • if((nf=open(nom_dbf,O_BINARY|O_RDONLY))<1)
  • {
  • printf("\nFichier %s absent.",nom_dbf);
  • return;
  • }
  • RCS=filelength(nf);
  • if(RCS<sizeof(ant1)+sizeof(ant2))
  • {
  • printf("\nFichier %s trop petit.",nom_dbf);
  • return;
  • }
  • RCS=sizeof(ant1);
  • read(nf,&ant1,RCS);
  • if(ant1.version<3)
  • {
  • printf("\nVersion %s incorrecte.",nom_dbf);
  • return;
  • }
  • fis=fopen(nom_str,"wt");
  • setbuf(fis,buf);
  • fprintf(fis,"//%s\n//RCS:%u NART:%lu\n",
  • nom_dbf,ant1.RCS,ant1.nart);
  • fprintf(fis,"struct DBF\n");
  • fprintf(fis,"{\n");
  • sprintf(man,"uchar efface;");
  • fprintf(fis,"\t%s\n",man);
  • N=(ant1.lg_antet-32)/32;
  • N1=0;
  • for(i=0;i<N;i++)
  • {
  • read(nf,&ant2,32);
  • if(ant2.nom[0]==0x0D) break;
  • N1++;
  • for(j=0;j<11;j++)
  • {
  • if(!ant2.nom[j]) break;
  • if(ant2.nom[j]==' ') break;
  • }
  • sprintf(man,"uchar %*.*s[%u];%100s",
  • j,j,ant2.nom,ant2.longueur,"");
  • sprintf(man+22," //%c",ant2.tip);
  • if(ant2.decimals) sprintf(man+strlen(man),
  • " %-2u DEC",ant2.decimals);
  • else sprintf(man+strlen(man)," %6s","");
  • sprintf(man+strlen(man)," C%u",i+1);
  • fprintf(fis,"\t%s\n",man);
  • }
  • N=N1;
  • N1=ant1.lg_antet-(N+1)*32;
  • fprintf(fis,"} dbf;\n");
  • fprintf(fis,"#define N %lu\n",N);
  • fprintf(fis,"struct ANTET_BASE\n");
  • fprintf(fis,"{\n");
  • fprintf(fis,"\tuchar version;\n");
  • fprintf(fis,"\tuchar annee;\n");
  • fprintf(fis,"\tuchar mois;\n");
  • fprintf(fis,"\tuchar jour;\n");
  • fprintf(fis,"\tulong nb_art;\n");
  • fprintf(fis,"\tushort lg_antet;\n");
  • fprintf(fis,"\tushort RCS;\n");
  • fprintf(fis,"\tuchar rien[20];\n");
  • fprintf(fis,"\tstruct\n");
  • fprintf(fis,"\t{\n");
  • fprintf(fis,"\t\tuchar den_champ[11];\n");
  • fprintf(fis,"\t\tuchar tip_champ;\n");
  • fprintf(fis,"\t\tulong adresse;\n");
  • fprintf(fis,"\t\tuchar lg_champ;\n");
  • fprintf(fis,"\t\tuchar nb_dec;\n");
  • fprintf(fis,"\t\tuchar rien[14];\n");
  • fprintf(fis,"\t} champs[N];\n");
  • fprintf(fis,"} a=\n");
  • fprintf(fis,"{\n");
  • lseek(nf,0l,SEEK_SET);
  • RCS=sizeof(ant1);
  • read(nf,man,RCS);
  • man[1]=d.da_year-1900;
  • man[2]=d.da_mon;
  • man[3]=d.da_day;
  • man[4]=man[5]=man[6]=man[7]=0;
  • fprintf(fis,"\t");
  • fprintf(fis,"%u,%u,%u,%u,0,%u,%u,\
  • 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,\n",
  • man[0],man[1],man[2],man[3],
  • man[9]*256+man[8],man[11]*256+man[10]);
  • for(i=0;i<N;i++)
  • {
  • read(nf,man,RCS);
  • fprintf(fis,"\t");
  • memset(alfa,0,12);
  • for(k=0;k<11;k++)
  • {
  • if(!man[k]) break;
  • alfa[k]=man[k];
  • }
  • k=11-k;
  • fprintf(fis,"\"%s\"%*s,'%c',%4lu,%3u,%2u,\
  • 0,0,0,0,0,0,0,0,0,0,0,0,0,0",
  • alfa,k,"",man[11],man[12]+256l*(man[13]+
  • 256l*(man[14]+256l*man[15])),man[16],man[17]);
  • if(i<N-1) fprintf(fis,",");
  • fprintf(fis,"\n");
  • }
  • fprintf(fis,"};\n");
  • if(N1)
  • {
  • N=N1/RCS;
  • fprintf(fis,"uchar b[%lu]=\n{",N1);
  • N1-=N*RCS;
  • for(i=0;i<N;i++)
  • {
  • read(nf,man,RCS);
  • fprintf(fis,"\n\t");
  • for(j=0;j<RCS;j++)
  • {
  • fprintf(fis,"%u",man[j]);
  • if(N1||j<RCS-1||i<N-1) fprintf(fis,",");
  • }
  • }
  • if(N1)
  • {
  • read(nf,man,N1);
  • fprintf(fis,"\n\t");
  • for(j=0;j<N1;j++)
  • {
  • fprintf(fis,"%u",man[j]);
  • if(j<N1-1) fprintf(fis,",");
  • }
  • }
  • fprintf(fis,"\n};\n");
  • }
  • fclose(fis);
  • close(nf);
  • }
  • }
//03-sep-2008 10:06:02

#include <dos.h>
#include <stdio.h>
#include <io.h>
#include <string.h>
#include <dir.h>

typedef unsigned short ushort;
typedef unsigned long  ulong;
typedef unsigned char  uchar;

#define O_BINARY 0x8000
#define O_RDONLY 1

struct date d;

ushort RCS,N,N1;
uchar nom_dbf[40];
uchar nom_str[40];
short nf;
FILE *fis;

ushort i,j,k;
uchar alfa[100];

struct DBF1
{
   uchar  version;
   uchar  aallzz[3];
   ulong  nart;
   ushort lg_antet;
   ushort RCS;
   uchar  rien[20];
} ant1;
struct DBF2
{
   uchar  nom[11];
   uchar  tip;
   ushort depl;
   ushort rien1;
   uchar  longueur;
   uchar  decimals;
   uchar  rien2[14];
} ant2;
struct ffblk a;
int I;
uchar man[1024];
uchar buf[BUFSIZ];

void main(void)
{
   getdate(&d);
   sprintf(man,"*.DBF");
   I=findfirst(man,&a,0);
   while(!I)
   {
      strcpy(nom_dbf,a.ff_name);
      I=findnext(&a);
      strcpy(nom_str,nom_dbf);
      sprintf(nom_str+strlen(nom_str)-3,"str");
      printf("\n%s ==> %s",nom_dbf,nom_str);
      if((nf=open(nom_dbf,O_BINARY|O_RDONLY))<1)
      {
         printf("\nFichier %s absent.",nom_dbf);
         return;
      }
      RCS=filelength(nf);
      if(RCS<sizeof(ant1)+sizeof(ant2))
      {
         printf("\nFichier %s trop petit.",nom_dbf);
         return;
      }
      RCS=sizeof(ant1);
      read(nf,&ant1,RCS);
      if(ant1.version<3)
      {
         printf("\nVersion %s incorrecte.",nom_dbf);
         return;
      }
      fis=fopen(nom_str,"wt");
      setbuf(fis,buf);
      fprintf(fis,"//%s\n//RCS:%u NART:%lu\n",
      nom_dbf,ant1.RCS,ant1.nart);
      fprintf(fis,"struct DBF\n");
      fprintf(fis,"{\n");
      sprintf(man,"uchar efface;");
      fprintf(fis,"\t%s\n",man);
      N=(ant1.lg_antet-32)/32;
      N1=0;
      for(i=0;i<N;i++)
      {
         read(nf,&ant2,32);
         if(ant2.nom[0]==0x0D) break;
         N1++;
         for(j=0;j<11;j++)
         {
            if(!ant2.nom[j]) break;
            if(ant2.nom[j]==' ') break;
         }
         sprintf(man,"uchar %*.*s[%u];%100s",
         j,j,ant2.nom,ant2.longueur,"");
         sprintf(man+22,"  //%c",ant2.tip);
         if(ant2.decimals) sprintf(man+strlen(man),
         "  %-2u DEC",ant2.decimals);
         else sprintf(man+strlen(man),"  %6s","");
         sprintf(man+strlen(man)," C%u",i+1);
         fprintf(fis,"\t%s\n",man);
      }
      N=N1;
      N1=ant1.lg_antet-(N+1)*32;
      fprintf(fis,"} dbf;\n");
      fprintf(fis,"#define N %lu\n",N);
      fprintf(fis,"struct ANTET_BASE\n");
      fprintf(fis,"{\n");
      fprintf(fis,"\tuchar  version;\n");
      fprintf(fis,"\tuchar  annee;\n");
      fprintf(fis,"\tuchar  mois;\n");
      fprintf(fis,"\tuchar  jour;\n");
      fprintf(fis,"\tulong  nb_art;\n");
      fprintf(fis,"\tushort lg_antet;\n");
      fprintf(fis,"\tushort RCS;\n");
      fprintf(fis,"\tuchar  rien[20];\n");
      fprintf(fis,"\tstruct\n");
      fprintf(fis,"\t{\n");
      fprintf(fis,"\t\tuchar den_champ[11];\n");
      fprintf(fis,"\t\tuchar tip_champ;\n");
      fprintf(fis,"\t\tulong adresse;\n");
      fprintf(fis,"\t\tuchar lg_champ;\n");
      fprintf(fis,"\t\tuchar nb_dec;\n");
      fprintf(fis,"\t\tuchar rien[14];\n");
      fprintf(fis,"\t} champs[N];\n");
      fprintf(fis,"} a=\n");
      fprintf(fis,"{\n");
      lseek(nf,0l,SEEK_SET);
      RCS=sizeof(ant1);
      read(nf,man,RCS);
      man[1]=d.da_year-1900;
      man[2]=d.da_mon;
      man[3]=d.da_day;
      man[4]=man[5]=man[6]=man[7]=0;
      fprintf(fis,"\t");
      fprintf(fis,"%u,%u,%u,%u,0,%u,%u,\
      0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,\n",
      man[0],man[1],man[2],man[3],
      man[9]*256+man[8],man[11]*256+man[10]);
      for(i=0;i<N;i++)
      {
         read(nf,man,RCS);
         fprintf(fis,"\t");
         memset(alfa,0,12);
         for(k=0;k<11;k++)
         {
            if(!man[k]) break;
            alfa[k]=man[k];
         }
         k=11-k;
         fprintf(fis,"\"%s\"%*s,'%c',%4lu,%3u,%2u,\
         0,0,0,0,0,0,0,0,0,0,0,0,0,0",
         alfa,k,"",man[11],man[12]+256l*(man[13]+
         256l*(man[14]+256l*man[15])),man[16],man[17]);
         if(i<N-1) fprintf(fis,",");
         fprintf(fis,"\n");
      }
      fprintf(fis,"};\n");
      if(N1)
      {
         N=N1/RCS;
         fprintf(fis,"uchar b[%lu]=\n{",N1);
         N1-=N*RCS;
         for(i=0;i<N;i++)
         {
            read(nf,man,RCS);
            fprintf(fis,"\n\t");
            for(j=0;j<RCS;j++)
            {
               fprintf(fis,"%u",man[j]);
               if(N1||j<RCS-1||i<N-1) fprintf(fis,",");
            }
         }
         if(N1)
         {
            read(nf,man,N1);
            fprintf(fis,"\n\t");
            for(j=0;j<N1;j++)
            {
               fprintf(fis,"%u",man[j]);
               if(j<N1-1) fprintf(fis,",");
            }
         }
         fprintf(fis,"\n};\n");
      }
      fclose(fis);
      close(nf);
   }
}


 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip


 Historique

03 septembre 2008 11:54:29 :
Title

 Sources du même auteur

Source avec Zip TABLES DE TRI ASSOCIES AUX FICHIERS
Source avec Zip CREATION D'UN FICHIER DBF (EN C)

 Sources de la même categorie

GESTION DE FICHIER ET DOSSIER + AUTRES par shinji63
Source avec une capture CONVERTISSEUR par smartties
Source avec Zip CREATION D'UN FICHIER DBF (EN C) par Stanel
Source avec Zip Source avec une capture GESTION DES ENTREES/ SORTIES AVEC CODEBARRE par YvaddavY
Source avec Zip Source avec une capture QT4 ET MYSQL par lemda

 Sources en rapport avec celle ci

Source avec Zip Source avec une capture GENERE BMP par lajouad
Source avec Zip Source avec une capture GETIONNAIRE D'UNE BIBLIOTHÉQUE EN C par benzarabel
FONCTION D'ÉDITION DE FICHIER BIT À BIT [C-MULTIPLATEFORME] par lynxtyle
Source avec Zip Source avec une capture UN GESTIONNAIRE DU FICHIER par benzarabel
Source avec Zip Source avec une capture TROUVER LES NOMBRES PREMIERS INFÉRIEURS À UNE LIMITE DONNÉE par angrevol

Commentaires et avis

Aucun commentaire pour le moment.

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

Taille de ma structure [ par crocejf2000 ] Salut a tous, J'ai un tres gros probleme qui me bloque toute mon avancé dans mon prog : j'ai une structure : typedef struct{ unsigned short Locate; ch structure d'un fichier video [ par jopop ] Je cherche à connaître la structure d'un fichier video du type AVI, voire plus simple s'il en est. De la même manière que l'on trouve cette structure dessiner des polygones a partir d'n fichier [ par NICKO ] Bonjour,Je cherche à dessiner des polygones (2 triangles pour commencer) dont les informations sont contenues dans un fichier.J'utilise les fonctions Lecture Ecriture fichier [ par wannie ] Salut tt le monde. Je suis nouveau ici et j'aimerai beaucoup obtenir de l'aide de développeur confirmé.Comme je suis novice sous le langage C++ j'aime Info Dbase et C [ par coopertel ] Bonjour,Je me lance dans la prog C (pas ++).J'ai comme compilateur Miracle C et Borland 5 ligne de commande.Je développe uniquement de programme sans Règles d'alignement + structure + fichier [ par visualstar ] Bonsoir, J'ai fais un p'tit programme qui écris simplement des structures dans un fichier. Puis après je fais le dump du fichier en question et j'aura Fonction dans une structure ? [ par mayti ] Bonjour, voil&#224; j'esseye d'utiliser une fonction dans une structure pour par exemple effacer un fichier: struct FICHIER { &nbsp;&nbsp;&nbsp; Structure d'un fichier IFO [ par highcobra ] Salut à tous, Qqun pourrait-il me dire comment sont architecturés les fichiers IFO contenus sur les DVD... Merci d'avanceHigh_Cobra ;) fichier binaire [ par stivi_45 ] Bonjour a tous, j'ai une petite question, je travaille sur un fichier binaire en c.Je stocke des informations dans ce fichier avec une structure : typ Fichiers ico, taille et structure ? [ par anarchysniper ] Disposant d'un pointeur vers le d&#233;but d'un fichier .ico dans une ressource, comment obtenir l'emplacement de la donn&#233;e suivante ? En fait il


Nos sponsors


Sondage...

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 1,981 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales