IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C++ Discussion :

Utilisation de la fonction GetPrivateProfileSectionNames


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Rédacteur/Modérateur
    Avatar de beekeep
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2006
    Messages
    2 005
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Octobre 2006
    Messages : 2 005
    Par défaut Utilisation de la fonction GetPrivateProfileSectionNames
    Bonjour à tous,

    j'essaye de récupérer la liste des sections d'un fichier à l'aide la la FAQ :
    http://cpp.developpez.com/faq/vc/?pa...leSectionNames

    contrairement à l'exemple je suis obligé de caster le premier paramètre en LPTSTR,
    je sais pas si c'est ça qui pose problème mais en tout cas ça ne fonctionne pas .. ça plante avant la fin de la boucle.

    voici mon code actuel:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
            char *szReturnedString= new char[32000];
            int nSizeRet= GetPrivateProfileSectionNames( LPTSTR( szReturnedString), 32000, p_sFilePath);
     
            int nSection=0,npos=0;
            while(npos<nSizeRet)
            {
                TRACE("%d-", strlen(szReturnedString+npos)+1);
                npos+=(strlen(szReturnedString+npos)+1);
                nSection++;
            }
            delete szReturnedString;
    output:
    2-2-2-2-2-1-1-2-2-Error: failed to load message box prompt string 0x0000.
    Merci d'avance

  2. #2
    Rédacteur
    Avatar de 3DArchi
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    7 634
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 7 634
    Par défaut
    Salut,
    Remplace char * par TCHAR et enlève le cast.

  3. #3
    Membre Expert
    Avatar de white_tentacle
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    1 505
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 1 505
    Par défaut
    et
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    delete[] szReturnedString

  4. #4
    Rédacteur
    Avatar de 3DArchi
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    7 634
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 7 634
    Par défaut
    Et wcslen ou mieux _tcslen dans TCHAR.h
    + verif echec allocation

  5. #5
    Rédacteur/Modérateur
    Avatar de beekeep
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2006
    Messages
    2 005
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Octobre 2006
    Messages : 2 005
    Par défaut
    Merci pour vos réponses ça marche

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
            TCHAR szReturnedString[32000];
            int nSizeRet= GetPrivateProfileSectionNames( szReturnedString, 32000, p_sFilePath);
     
            int nSection=0,npos=0;
            while(npos<nSizeRet)
            {
                int iSectionLength = _tcslen(szReturnedString+npos);
     
                CString sSection = _T("");
                for(int i=npos; i<npos+iSectionLength; i++)
                {
                    sSection.AppendChar(szReturnedString[i]);
                }
     
                this->m_vMaterial.push_back( new CMaterial( sSection ) );
     
                npos += iSectionLength+1;
            }
    la partie récupération des noms de section n'est peut-être pas idéale mais ça fonctionne ..


  6. #6
    Membre Expert
    Avatar de white_tentacle
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    1 505
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 1 505
    Par défaut
    allouer 32000 TCHAR sur la pile, c'est beaucoup (avec sizeof(wchar_t) == 4, ça nous ferait 128ko sur la pile, gros risque de stack overflow) --> il faudrait mieux recourir à un tableau alloué sur le tas.

  7. #7
    Rédacteur/Modérateur
    Avatar de beekeep
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2006
    Messages
    2 005
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Octobre 2006
    Messages : 2 005
    Par défaut
    oui c'est beaucoup je vais le réduire,
    mais vu qu'on ne connais pas la taille avant de créer le buffer je vois pas comment faire ce que tu dis.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [LG]Utilisation de la fonction time
    Par kmitz dans le forum Langage
    Réponses: 4
    Dernier message: 08/04/2005, 13h05
  2. Utilisation de la fonction de déploiement
    Par mchicoix dans le forum XMLRAD
    Réponses: 4
    Dernier message: 01/03/2005, 14h35
  3. [LG]Utilisation de la fonction Random
    Par chloe95 dans le forum Langage
    Réponses: 1
    Dernier message: 01/03/2005, 14h20
  4. Utilisation de la fonction qsort
    Par Jsmeline dans le forum C
    Réponses: 8
    Dernier message: 28/01/2005, 12h40
  5. [LG]librairies : utiliser seulement quelques fonctions
    Par wwwroom dans le forum Langage
    Réponses: 13
    Dernier message: 14/05/2004, 22h50

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo