begin process at 2012 05 29 06:19:24
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive C/C++

 > 

Archives

 > 

Au secours

 > 

Erreurs de compilations bizarres avec Visual C++ 6


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Erreurs de compilations bizarres avec Visual C++ 6

vendredi 23 avril 2004 à 09:53:58 | Erreurs de compilations bizarres avec Visual C++ 6

VTS_35

Bonjour,
G encore des problèmes de compilation avec mon programme. Je me suis rendu compte que le programme allait devenir balaise, alors j'ai décidé de le modulariser afin que ce soit plus clair. Sauf qu'évidemment, C là que G eu toutes sortes d'erreurs!

Bon, je vous explique un peu mon programme:
pour l'instant G deux gros fichiers: un qui liste des reépertoires, un qui effectue des lectures d'entetes sur des fichiers images (infrarouges).

voici mes fichiers:
const.h (y'a encore rien dedans, C juste pour lafiorme:) )

#ifndef CONST_H
#define CONST_H

#endif


types.h

#ifndef STRUCT_H
#define STRUCT_H

#include "const.h"

//structures de gestion de la date et de l'heure.
struct Date{
short Year;
int Day;
int Month;
};

struct Time{
int Minute;
int Hour;
int Hundred;
int Second;
};

//déclaration des types
typedef unsigned char byte; //type 'octet'

typedef struct {
struct Date date;
struct Time heure;
char camera[20];
char lentille[20];
char filtre[20];
char calibration[13];
float bandeInf; //intervalle de la bande infrarouge
float bandeSup; //en ùm
float temp; //température de la caméra
int hauteur;
int largeur;
} Entete;

#endif


global.h

#ifndef GLOBAL_H
#define GLOBAL_H

#include "types.h"


extern Entete enteteL;
extern Entete enteteR;

extern char Indentation[256];


#endif


image.h

#ifndef IMAGE_H
#define IMAGE_H

#include <stdio.h> //FILE* ...


//prototypes des fonctions
void skip(FILE*, int);
void lireFichier(FILE*);
void recopierEntete(FILE*, FILE*);
void afficheDonnees(Entete);
void creerListe(FILE*);


#endif


et dossier.h

#ifndef DOSSIER_H
#define DOSSIER_H


//prototypes des fonctions
void Save_En_Tete_Fichier(FILE*, char *);
void ScanContenuDossiers(char*, FILE*)


#endif


et maintenant les sources:
dossier.cpp

#include <windows.h> //manip fichiers
#include <conio.h>
#include <stdio.h> //FILE* ...

#include "global.h"
#include "dossier.h"


// creation de la liste des répertoires et fichiers //
void Save_En_Tete_Fichier(FILE* f, char *Chemin){

char *Texte;

// on alloue de la memoire pour enregistrer deja les informations qui sont en en-tete du fichier
Texte = (char*) malloc((90+strlen(Chemin))*sizeof(char)+1);
// le +1 sert pour le '\0' à la fin de la chaine car strlen() ne le compte pas.
// l'ensemble du texte ecrit en dessous fait 90 caracteres

// on copie l'en-tete dans Texte
strcpy(Texte, "Repertoire en cours : ");
strcat(Texte, Chemin);
strcat(Texte, "\n");
strcat(Texte, "--------------------------------------");
strcat(Texte, "\n\n");
strcat(Texte, "Fichiers présents : \n\n");

// on enregistre les données dans notre fichier
fwrite(Texte, sizeof(char), strlen(Texte), f);

// on libère la mémoire
free(Texte);
}


// scanne tous les dossiers et sous-dossiers //
void ScanContenuDossiers(char *CurrentDir, FILE *f)
{
char Chemin[MAX_PATH];
WIN32_FIND_DATA wData;
HANDLE listing;

// on rajoute *.* à la fin de l'adresse pour FindFirstFile()
sprintf (Chemin, "%s*.*", CurrentDir);
listing = FindFirstFile(Chemin, &wData);

// on enleve le *.* à la fin de l'adresse
sprintf (Chemin, "%s", CurrentDir);

if (listing != INVALID_HANDLE_VALUE)
{
do
{
if ((strcmp(wData.cFileName, ".."))&&((strcmp(wData.cFileName, "."))))
{
if (wData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)
{
// puisque c'est un repertoire, on recupere la nouvelle adresse, et on va rentrer dedans...
sprintf(Chemin, "%s%s/", CurrentDir, wData.cFileName);
// avant, on stoque le nom du repertoire dans notre "fichier de listing" (fichier créé par notre programme)
fprintf(f, "%s+ %s\n", Indentation,wData.cFileName);
// on indente (car on va rentrer dans un repertoire)
strcat(Indentation, " | ");
// on rappelle la fonction pour qu'elle s'execute dans le repertoire (recurence)
ScanContenuDossiers(Chemin, f);
// on enleve l'indentation puisque on ressort du repertoire
Indentation[strlen(Indentation)-4] = '\0';

// reviens un repertoire en arrière
int j = strlen(Chemin)-2;
while (j>0)
{
if (Chemin[j] == '/')
{
Chemin[j+1] = '\0';
break;
}
j--;
}
}
else // si c'est pas un dossier, c'est un fichier...
if (tolower(wData.cFileName[strlen(wData.cFileName)-3]) == 'p' && tolower(wData.cFileName[strlen(wData.cFileName)-2]) == 't'){ //si c'est un fichier IR
fprintf(f, "%s- %s\n", Indentation,wData.cFileName); // on enregistre le nom du fichier
}

}
}while (FindNextFile(listing, &wData));
}
FindClose(listing);
}


image.cpp

//////////////////////////////////////////////////////////////////////////////
// image.cpp -> fonctions permettant le traitement des fichiers infrarouges //
//////////////////////////////////////////////////////////////////////////////
#include <iostream> //namespace std
#include <iomanip> //setw, setfill...

using namespace std; //pour les cout, endl...

#include "global.h"
#include "types.h"
#include "image.h"



// fonction permettant de passer des champs de données //
void skip(FILE* f, int nboctets){
for (int i = 0; i < nboctets; i++){
fgetc(f);
}
}


// fonction de lecture des entêtes des fichiers infrarouges //
void lireFichier(FILE* fe){

skip(fe,35); //0
fread(&enteteL.date.Year, sizeof(unsigned short),1,fe); //35
fread(&enteteL.date.Day, sizeof(byte),1,fe); //37
fread(&enteteL.date.Month, sizeof(byte),1,fe); //38
fread(&enteteL.heure.Minute, sizeof(byte),1,fe); //39
fread(&enteteL.heure.Hour, sizeof(byte),1,fe); //40
fread(&enteteL.heure.Hundred, sizeof(byte),1,fe); //41
fread(&enteteL.heure.Second, sizeof(byte),1,fe); //42
skip(fe,1); //43
fread(&enteteL.camera, sizeof(byte),20,fe); //44
fread(&enteteL.lentille, sizeof(byte),20,fe); //64
fread(&enteteL.filtre, sizeof(byte),20,fe); //84
skip(fe,20); //104
fread(&enteteL.calibration, sizeof(byte),13,fe); //124
skip(fe,51); //137
fread(&enteteL.bandeInf, sizeof(float),1,fe); //188
fread(&enteteL.bandeSup, sizeof(float),1,fe); //192
skip(fe,16);//acces à la valeur housing temp dans un 'reservedPTR[49]' //196
fread(&enteteL.temp, sizeof(double),1,fe); //212
enteteL.temp -=(float) 273.15; //conversion °K en °C //220
skip(fe,157); //acces à 'Column' -> largeur image //377
fread(&enteteL.largeur, sizeof (short int),1,fe);
fread(&enteteL.hauteur, sizeof (short int),1,fe);

}


// fonction de recopiage d'entête du fichier fe vers le fichier fs //
//il n'y a plus qu'a rajouter l'image et le fichier PTM est créé! ;)
void recopierEntete(FILE* fe, FILE* fs){
byte tmp[3072];
fseek(fe,0L,SEEK_SET); //on se positionne en début de fichier
fread(&tmp, sizeof(byte),3072,fe); //on lit 2048(mainheader) + 1024(1st frameheader) de fe dans tmp
fwrite(&tmp, sizeof(tmp),1,fs);
}


// fonction d'affichage des données de l'entête //
void afficheDonnees(Entete ent){
//FILE* fe =fopen("test.txt", "w+b"); //affichage dans un fichier
//dup2(fe,0);
cout << "[ Affichage des donnees ]" << endl;
cout << left << setw(31) << setfill('-') << '-' << endl << setfill(' ');

cout << left << setw(15) << "Date" << ": " << setfill ('0') << right << setw(2) << ent.date.Day << '/' << right << setw(2) << ent.date.Month << '/' << ent.date.Year << endl << setfill(' ');
cout << left << setw(15) << "Heure" << ": " << setfill ('0') << right << setw(2) << ent.heure.Hour << ':' << right << setw(2) << ent.heure.Minute << ':' << ent.heure.Second << '.' << ent.heure.Hundred << endl << setfill(' ');
cout << left << setw(15) << "Camera" << ": " << ent.camera << endl;
cout << left << setw(15) << "Lentille" << ": " << ent.lentille << endl;
cout << left << setw(15) << "Filtre" << ": " << ent.filtre << endl;
cout << left << setw(15) << "Temperature" << ": " << setprecision(3) << ent.temp << " C" << endl;
cout << left << setw(15) << "Bande IR" << ": " << ent.bandeInf << '-' << ent.bandeSup << " um" << endl;
cout << left << setw(15) << "Dimensions" << ": " << ent.largeur <<'x' << ent.hauteur << endl;
cout << left << setw(15) << "Calibration" << ": ";
if (atoi(ent.calibration) != 0){
cout << ent.calibration << endl;
} else {
cout << "n/a" << endl;
}


cout << left << setw(31) << setfill('-') << '-' << endl << setfill(' ');
cout << "[ Fin du traitement ]" << endl;
}



// fonction générant une liste des fichiers IR //
void creerListe(FILE* fe){

fprintf(fe,"%d/%d/%d;",enteteL.date.Day,enteteL.date.Month,enteteL.date.Year);
fprintf(fe,"%d:%d:%d.%d;",enteteL.heure.Hour,enteteL.heure.Minute,enteteL.heure.Second,enteteL.heure.Hundred);
fprintf(fe,"%dx%d;",enteteL.largeur, enteteL.hauteur);
fprintf(fe,"%s;",enteteL.camera);
fprintf(fe,"%s;",enteteL.lentille);
fprintf(fe,"%s;",enteteL.filtre);
fprintf(fe,"%f;",enteteL.temp);
fprintf(fe,"%s\n",enteteL.calibration);

}


et main.cpp

#include <stdio.h> //FILE* ...
#include <iostream>

#include "global.h"
#include "main.h"
#include "dossier.h"
#include "image.h"


using namespace std; //pour les cout, endl...


int main(){
char nomfic_R[13] = "11_14_46.pt2";
char nomfic_W[13] = "test.ptm";

string repertoire = "H:\\images\\*.*";

FILE* fichier = fopen(nomfic_R, "r+b");
FILE* fichier2 = fopen(nomfic_W, "w+b");

////////////////// Travail sur les répertoires
FILE *f;
char Dir_File[_MAX_PATH]; //variables d'environnement
char Chemin[_MAX_DIR];

printf("\nTaper l'adresse du repertoire a scanner:\n\n");
printf("par exemple : \"H:\\\\images\\\"");
printf("\nChemin: ");
gets(Chemin);

/*
printf("\n\nTaper le nom du fichier dans lequel sera enregistre les informations :\n\n");
printf("\nNom: ");
gets(Dir_File);
*/
strcpy(Dir_File, "liste.txt");

f = fopen(Dir_File,"wt");
if (f == NULL)
{
printf("Erreur lors de l'ouverture du fichier");
return 0;
}
else
{
Save_En_Tete_Fichier(f, Chemin);
//printf("Veuillez Patienter ...\n");
ScanContenuDossiers(Chemin, f);
fclose(f);
printf("Operation reussie !\n\n");
}
///////////////////


/////////////////// Travail sur les fichiers infrarouges
//lecture
lireFichier(fichier);

//recopiage d'entete
recopierEntete(fichier, fichier2);

fclose(fichier);
fclose(fichier2);

return 0;
}


sans oublier main.h ^^

#ifndef MAIN_H
#define MAIN_H

#include "types.h"

int main (void);

#endif


Voilà, bon, C juste pour la forme qu'il y a certains modules, mais si ça marche maintenant, ce sera mieux pour la suite! =)

en gros, il me génère des erreurs du style:
error C2143:syntax error : missing ';' before 'PCH creation point' dans dossier.cpp

et warning C4518: 'void': storage-class or type specifier(s) unexpected here; ignored dans image.h

Je suppose que G mal défini une structure ou que j'inclus pas le bon fichier, mais je suis dessus depuis hier midi et ça commence à me saouler...

Je C que C un post long et po facile à comprendre, mais s'il vous plait: AIDEZ MOI!!!
vendredi 23 avril 2004 à 12:48:04 | Re : Erreurs de compilations bizarres avec Visual C++ 6

theneoiceman

une solution a ton probleme deja :
dans image.h tu utilises ta structure Entete dans une de tes fonctions or cette structure n'est pas conue par le compilateur sauf si tu inclus "types.h".
Ca fera deja une erreur de reglée.
Après si je trouve une autre erreur je te tiens au courant.
Voila...
++
vendredi 23 avril 2004 à 12:53:57 | Re : Erreurs de compilations bizarres avec Visual C++ 6

VTS_35

Salut theneoiceman.
G déjà essayé, mais ça n'a pas résolu de problèmes, alors je ne l'ai pas ajouté dans le code.

Je te remercie de te pencher sur mon problème, t'as certainement pas que ça à faire! lol
Bon courage! Hésites pas si y'a qqch que tu comprend pas, envoie un post, je répond dans les 5min si je suis pas OQP (en stage!)

Encore merci!

++
vendredi 23 avril 2004 à 13:10:43 | Re : Erreurs de compilations bizarres avec Visual C++ 6

theneoiceman


je t'ai trouvé une erreur sure :

dans ton "dosier.h" tu as vu qu'il te manquait le point virgule à la fin de ta declaration de
"void ScanContenuDossiers(char*, FILE)".
Rajoute deja le ";" et ca ira un peu mieux.
Voila je continue mon enquete.
:-)
neo
vendredi 23 avril 2004 à 13:20:21 | Re : Erreurs de compilations bizarres avec Visual C++ 6

VTS_35

C bon Neo! Tu peux arreter!
raah! Je l'avais pas vu celui là! Parfois, C vrai qu'un regard extérieur sur le code permet de déceler les erreurs plus facilement!


Raaah.... Tu m'as sauvé la vie! Je t'aime!!!

J'te remercie encore! T'es mon sauveur! lol

Bon, je V continuer de développer.. Si t'as un problème, et que je peux t'aider, ce dont je doute fort, mais on sait jamais, hésites pas! lol

Merci!
jeudi 11 novembre 2010 à 06:56:53 | Re : Erreurs de compilations bizarres avec Visual C++ 6

venousto

je suis debutant et j'ai un probleme
je sais pas comment on fait pour organiser
des fichier de variable
et de fonction sous devc++
si une bonne ames veut bien etre sympa
je remercie d'avance ce site genial


Cette discussion est classée dans : fichier, code, file, include, char


Répondre à ce message

Sujets en rapport avec ce message

Petit probleme de code en C sur Linux !! [ par UncleShu ] Je voudrais créer un fichier dans le réperoire personnel d'un utilisateur mais mon code ne marche pas !!#include #include #include #define DIR $HOM Problème de lecture [ par Hades53 ] Voila, j'ai fait un code pour lire des fichiers qui marche, mais il y a un petit problème avec la dernière ligne du fichier qu'on veut lire:si la dern #include circulaires [ par abubu38 ] Salut, J'ai un gros probleme de compilation au niveau des .h :fichier f1.h : #include f2.h class A { // définition nécéssitant la classe Erreur DeviceIoControl ??? pk acces refusé ? [ par akk ] Bonjour,Voila lorsque j'execute ce code :(on passe le nom du lecteur en parametre exemple : main C)#include #include <iostre Fichier include "glut.h" [ par Ben0007 ] Hello,J'obtiens ce message d'erreur en compilant un exemple de programme trouvé sur ce site:"fatal error C1083: Cannot open include file: 'gl/glut.h': Problème copie de fichier.... [ par Clonk ] Bonjour,Je voudrais copier un fichier texte dans mon appli, j'ai fais la fonction suivante://Copie d'un fichier (création du backup)int copier(char * VC++ et erreurs de compilations :( [ par morpheus83z ] Bonjour tout le monde !Voilà, je ne comprends pas, j'ai un programme qui ne veut pas se compiler et je désespère vraiment ...#include // iostream.h e problème de char [ par minet03 ] Coucoutout le monde, tout d'abord voilà mon code :#include #include #include #include #include #include char *bin_dec(char *binai SOS manque d'inspiration [ par graall ] J'ai besoin de faire un petit programme (en mode console) qui demande à l'utilisateur de saisir le nom d'un fichier et ensuite, qui vérifie si ce fich Pb de majuscule à modifier sur un fichier [ par lacharlottinne ] Je voudrai convertir le text de mon fichier tout en minuscule .. quelqu'un peut m'aider ? voici le code #include #include #include #include #includ


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

Photothèque

A découvrir



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

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