GrandGarfield
Messages postés9Date d'inscriptionsamedi 8 juillet 2006StatutMembreDernière intervention21 février 2008
-
19 févr. 2008 à 18:02
GrandGarfield
Messages postés9Date d'inscriptionsamedi 8 juillet 2006StatutMembreDernière intervention21 février 2008
-
21 févr. 2008 à 16:55
Bonjour,
j'ai développé une application C++ qui fait intervenir des lectures et écritures dans des fichiers textes.
J'ai en fait commencé le développement simplement dans notepad++ et je compilais en ligne de commande avec g++ -o.
Le programme grandissant, je l'ai passé pour des raisons pratiques dans Visual Studio 2008 Express. (Projet vide dans lequel j'ai simplement mis mes source et fait générer)
Aucun problème jusque là, tout marche.
Il faut maintenant que j'intègre mon code dans un autre codé sous VC++6 et utilisant les MFC.
Je décide donc déjà de passer mon code sous Visual Studio 2005 pro que j'ai sur une autre machine (même méthode projet vide et j'y mets mes sources).
La compilation fonctionne mais le résultat n'est plus du tout bon.
Voici un exemple où je constate les dégâts (code en fin de message) :
Il s'agit en fait de lire la facettes dans un fichiers VRML qui sont écrites sous la forme : a, b, c, -1, (a,b,c étant des int qui représentent les sommets de la facettes et -1 un caractère délimiteur pour indiquer que la facette s'arrête.)
La fin du bloc de facettes se termine par un ] à la place d'une virgule après le -1.
Le bout de code suivant lit à chaque fois un entier (a) , un char (,), un entier (b), un char (,), un entier (c), un char (,), un entier (-1), un char (, ou ] )
Il met ensuite les données recueillies dans des structures pour les traiter après. Il s'arrête à la rencontre du caractère ']'
En compilant le programme contenant ce bout de code en ligne de commande g++ -o ... tout fonctionne et j'ai les bonnes données dans mes structures. En particulier le message "facette non triangulaire rencontrée " ne s'affiche jamais
Mais le programme fourni par visual studio affiche systématiquement le message avec des valeurs i,j,k,l tout le temps identiques (3350360,0,1244372,3342336).
Je sollicite donc votre aide si quelqu'un sait pourquoi le compilateur de Visual Studio 2005 pro ne fait pas des programmes qui lisent les fichiers de la même facon que g++ ou celui de VS2008 express et si on peut arranger le code pour que ça fonctionne...
(Note : je n'ai pas retouché le code entre les changement d'EDI il s'agit exactement des même fichiers sources dans toutes les descriptions que j'ai faites par ailleurs je ne sais pas si ça compte mais j'ai essayé de n'utiliser aucune fonctions "C" donc pas de fopen, fread, de gets, de fscanf ou quoi que ce soit du genre)
gvollant
Messages postés22Date d'inscriptionmardi 3 mars 2009StatutMembreDernière intervention 3 mars 200913 20 févr. 2008 à 11:28
Essayez à la fois dans le projet VS2008 (qui fonctionne) et VS2005 de faire une fonction qui va créer en sortie un fichier avec des valeurs numériques, en utilisant la même famille de fonction que ce que vous utilisez pour lire le fichier, et ensuite de comparer les 2 fichiers produits
GrandGarfield
Messages postés9Date d'inscriptionsamedi 8 juillet 2006StatutMembreDernière intervention21 février 2008 21 févr. 2008 à 16:55
Merci, en suivant cette idée j'ai trouvé un moyen de contourner le problème.
En fait quelques lignes plus haut il y a sensiblement le même type de lecture mais avec des variables double et cela marchait très bien. ( J'ai fait en fait réecrire les valeurs lues dans un fichier )
Les variables i,j,k et l étaient des int dans le code au-dessus car c'est bien des int que je veux lire et que le programme lisait bien jusque là.
J'ai donc mis mes variables i,j,k et l en double pour la lecture et je les ai casté après en int.
C'est assez moche et ça n'explique pas la raison du problème mais ça marche en attendant de trouver mieux ...