begin process at 2010 02 09 23:04:29
  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é :3 712 / 121

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

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
Source avec Zip Source avec une capture [WXWIDGETS] WXSQLITE+ 0.1 ALPHA - EXPLORATEUR DE FICHIER DE ... par fredcl
Source avec Zip BASES DE DONNÉES ET LES PHOTOS par sofinf2006

 Sources en rapport avec celle ci

FICHIER ALBUM MUSICAL par imenouuuuuuuuuche
COPIE AVEC SHFILEOPERATION par steph12358
Source avec Zip CHANGEUR DATE FICHIER (WIN32) par BruNews
Source avec Zip Source avec une capture TRANSFERT DE FICHIER TCP [GCC - GTK] par ganjarasta
Source avec Zip JEU DES PETIT CHEVAUX par flamt

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...

Comparez les prix

CalendriCode

Février 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728

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,061 sec (3)

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