shub85
Messages postés23Date d'inscriptionmercredi 21 novembre 2007StatutMembreDernière intervention27 février 2008
-
6 févr. 2008 à 21:37
shub85
Messages postés23Date d'inscriptionmercredi 21 novembre 2007StatutMembreDernière intervention27 février 2008
-
6 févr. 2008 à 22:02
Bonjour,
J'ai un problème lors de la relecture de mes fichiers INI.
Mon fichier est structurée comme ceci:
[1]
003
032
033
021
[2]
001
002
004
001
...
Pour relire chaque valeur j'utilise des char[4], 3 char car 3 digits + un digit pr l'espace
J'arrive à relire tous correctement, mais sauf la derniere valeur avant la [clé].
Lors du debugging, je m'apperçoit que je ne recupère pas mon dernier chiffre.
Par ex, juste avant la clé [2], je relis:
////////////////////////////////////////////////////////////////////////
//////Récupération des données dans le fichier BaseSpectres.ini////////
////////////////////////////////////////////////////////////////////////
GetPrivateProfileString(
"Info", //section
"NbSpectre", //cle
"", // string par default
Nb_Spectres, //arrivee
9, //taille de larrivee
Path_Ini.c_str() // nom du fichier
);
float f_auxNb_Spectres = atof(Nb_Spectres); //Transtypage necessaire
ParaSpectro.SetNb_Spectres((int)f_auxNb_Spectres); // on enregistre le parametre
GetPrivateProfileString(
"Info", //section
"NbLongueursOnde ", //cle
"", // string par default
NbLongueursOnde, //arrivee
9, //taille de larrivee
Path_Ini.c_str() // nom du fichier
);
float f_auxNbLongueursOnde = atof(NbLongueursOnde); //Transtypage necessaire
ParaSpectro.SetNbLongueursOnde((int)f_auxNbLongueursOnde); // on enregistre le parametre
GetPrivateProfileString(
"Info", //section
"LongueurOndeInit", //cle
"", //string par default
LongueurOndeInit, //arrivee
9, //taille de larrivee
Path_Ini.c_str() // nom du fichier
);
float f_auxLongueurOndeInit = atof(LongueurOndeInit);
ParaSpectro.SetLongueurOndeInit((int)f_auxLongueurOndeInit); // on enregistre le parametre
GetPrivateProfileString(
"Info", //section
"Pas", //cle
"", //string par default
Pas, //arrivee
9, //taille de larrivee
Path_Ini.c_str() // nom du fichier
);
float f_auxPas = atof(Pas); //Transtypage necessaire
ParaSpectro.SetPas((int)f_auxPas); // on enregistre le parametre
//////////////////////////////////////////////////////////////////////////////
////// Rééchantillonage et stockage dans nouveau fichier INI ////////
//////////////////////////////////////////////////////////////////////////////
int pas_reech=floor(f_auxNbLongueursOnde/nb_ech);// calcul du pas d'echantillonage
int seuil=pas_reech-1;// fixer seuil à pas_reech-1
int nb_lgOnde_reech = pas_reech*nb_ech;// nouveau nombre de long. d'onde après reechantillonage (ici 720 au lieu de 721)
for ( unsigned int i = 1; i< (f_auxNb_Spectres+1) ; i++)
{
char cSection[10];// tableau temporaire contenant un char par ligne
char cTemp [4000];// il faut au minimum que la taille du tableau [ 1+4*iNbLongueurOnde ]
sprintf(cSection,"%d",(long)i);//section le numero de l'image = nom de section
GetPrivateProfileSection
( cSection, //section le numero de l'image = nom de section
cTemp, //arrivee
(4*nb_lgOnde_reech), //taille de larrivee
Path_Ini.c_str() // nom du fichier
);
fprintf (pFile, "[%0.2s]\n",cSection);//[%0.2]: permet d'avoir 2 chiffres entre crochets..
int iTemp = 0;
int iTemp1 = 0;
int iTemp2 = 0;
for (unsigned int j = 0; j<(4*nb_lgOnde_reech);j= j+4)
{
//Transtypage necessaire
iTemp = cTemp[j]-'0';
iTemp1 = cTemp[j+1]-'0';
iTemp2 = cTemp[j+2]-'0';
piTemp[j/4] = ((iTemp*100)+(iTemp1*10)+(iTemp2));// le chiffre int contient 3 char colle '0' '1' '5' et char fin de chaine '/0' = 015