begin process at 2012 05 29 21:47:50
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C++ & C++ .NET

 > 

Algorithme

 > 

Maths

 > 

Problème récupération de donnée INI


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

Problème récupération de donnée INI

mercredi 6 février 2008 à 21:37:32 | Problème récupération de donnée INI

shub85

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:

char[j]='0'
char[j+1]='2'
char[j+2]='' //pb



mercredi 6 février 2008 à 21:55:05 | Re : Problème récupération de donnée INI

Neo_Fr

Membre Club
Si tu poste pas ton code personne pourra t'aider.. Neo_Fr
mercredi 6 février 2008 à 22:02:29 | Re : Problème récupération de donnée INI

shub85

Ok, fait pas gaffe à la bidouille pour que sa tourne (en rouge) ;)

CParaMethodeRna CRna::Spectro(const std::string Path_Ini)
{

    CParaMethodeRna ParaSpectro;


    string FichierBaseSpectres [30];
    char NbLongueursOnde [10];
    char LongueurOndeInit [10];
    char Pas [10];
    char Nb_Spectres [10];

    int som=0;
    int nb_ech=80;
   
   
    float moy=0;
    int resultat_moy=0;


    ////////////////////////////////////////////////////////////////////////
    //////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)

    int prob=(4*(nb_lgOnde_reech-1));


    int * piTemp = new int[nb_lgOnde_reech ];

    if  (f_auxPas==1)

        {



            FILE * pFile;// creation fichier
           
            char chemin[MAX_PATH];            // recupération chemin de stockage   
            GetCurrentDirectory(MAX_PATH, chemin);
            char *c;
            c = chemin + GetModuleFileName(0, chemin, MAX_PATH);
            while(*c != '\\') c--;
            strcpy(c + 1, "Config\\Spectro.ini");
                               

            pFile = fopen (chemin,"w");    // 'w' écriture dans le nouveau fichier INI réechantillonné

            // ecriture entete du fichier INI
            fprintf (pFile, "%s\n","[Info]");
            fprintf (pFile, "PasReech = %d\n",pas_reech);
            fprintf (pFile, "NbLongueursOndeReech = %d\n",nb_ech);
            fprintf (pFile, "LongueurOndeInit = %d\n",(int)f_auxLongueurOndeInit);
            fprintf (pFile, "Nb_Spectres = %d\n",(int)f_auxNb_Spectres);




            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
                           
                            //piTemp [j/4]= 100*(cTemp[j]-'0') + 10*(cTemp[j+1]-'0') + (cTemp[j+2]-'0');


                            if (j==prob)
                           
                            {piTemp[j/4]=piTemp[(j/4)-4];}// on considere valeur egale a la precedente


                        /////////////////////////////////////////
                        // reechantillonnage (somme + moyenne) //
                        /////////////////////////////////////////
                               

                            som += piTemp[(j/4)];
                             
                            if ((j/4)==seuil)//si seuil nombre d'echantillon atteind =>moyenne
                             {
                                moy=som/pas_reech;// moyenne
                                           
                                resultat_moy=Arrondi(moy);// arrondir la valeur si non entier
                               
                                           
                                                        
   
                                fprintf (pFile, "%3.3d\n",resultat_moy);
                               

                               
                                seuil=seuil+pas_reech;
                                som=0;
                                moy=0;
                                resultat_moy=0;
                               
                               
                               
                                };    // fin if                   
                           
                       
                        }// for j

           
                        seuil=pas_reech-1;// On remet le seuil=8 car changement de patch
            }// fin for i

       
            fclose (pFile);// Fermeture du fichier car reechantillonnage terminée

        };// fin if pas==1
   
        free (piTemp);




        return ParaSpectro;

    }// fin Spectro



Cette discussion est classée dans : problème, donnée, ini, récupération, char


Répondre à ce message

Sujets en rapport avec ce message

problème tout bête [ par Raoul12 ] voilà, je débute dans le c++ et je voudrais faire ça:char hohun[32] ;hohun = "hohun" ;mais ça ne marche pas... pourtant si je fais ça:char hohun[32] = problème [ par Raoul12 ] voilà, je débute dans le c++ et je voudrais faire ça:char hohun[32] ;hohun = "hohun" ;mais ça ne marche pas... pourtant si je fais ça:char hohun[32] = Conversion de donnée [ par Johjo ] Salut tout le monde, je cherche à convertir une valeur char en valeur float et inversement de float en char. L'equivalent de Val et Str en basic.Merci problème de lecture en c++ sous vc++6 [ par os22 ] j'essaie de lire un fichier ayant le contenu suivantmarc;collin;4506777228;906 boule;longueuil;j4j1t5;qc;14;allo;roger;dumais;5413432128;1150 dumahel; INI :: AIDEZ MOI SVP !! [ par bdkiller ] Bonjour,Je suis newbie dans le Cpp. J'utilise Borland Cpp Builder.J'ai un petit problème avec les fichiers ini. Et vu que je n'arrive pas à le résoudr Problème de récupération de donnéesd'une base DAO [ par neorion ] Bonjour.Mon problème est le suivant : j'ai réussit à créer une base de données DAO, j'arrive à inserer des informations sans problème, mais je n'arriv Problème avec char* [ par Wiwi ] Bonjour tt le monde, j'ai une tite pro (bidon) avec ce morceau de programme. Lors de sa compilation il n'y a aucune erreur, par contre lors de son exé Problem avec les .INI [ par Tidam ] voila je debute en c++ et je commence a me servir des .inij'utilise les WritePrivateProfileString , GetPrivateProfileString , etc... de windows.h mais problème de concaténation [ par moloko2000 ] Existe t'il un moyen de concaténer des char * des char et des int?Je supose que non mais bon .... conversion int en char* [ par arwenita ] Encore un petit problème en C++...Dans mon programme, je voudrais afficher une liste de nombres (premiers), que je récupère de la fonction Crible(n).L


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 : 0,796 sec (4)

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