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 :

Lire dans des fichier ini


Sujet :

C++

  1. #1
    Membre régulier Avatar de ia.jenny
    Profil pro
    Inscrit en
    Août 2007
    Messages
    152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 152
    Points : 78
    Points
    78
    Par défaut Lire dans des fichier ini
    bonjour,
    je ne comprend pas pourquoi je n’arrive pas à mémoriser les 2 valeur dans le fichier ini avec GetPrivateProfileString
    un problème avec char *Name;
    j’obtiens :
    DataUnits[1].Name=blabla2 et DataUnits[2].Name=blabla2 et je devrais avoir DataUnits[1].Name=blabla1

    merci beaucoup
    @+

    dans le fichier "Images/1/Config.ini"
    dans le fichier "Images/2/Config.ini"


    Dans le fichier .h
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    struct SDataUnits
    {	
              ..
    	char *Name;
    };
    Dans le fichier .cpp


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    #include "Main.h"
    SDataUnits DataUnits[1000]={};
    ....
    void CLoad::Config()
    {
    	char temp[65535];
    	GetPrivateProfileString("tank","Name","",temp,sizeof(temp),"Images/1/Config.ini");
    	DataUnits[1].Name=temp;
     
     
    	GetPrivateProfileString("tank","Name","",temp,sizeof(temp),"Images/2/Config.ini");
    	DataUnits[2].Name=temp;
    }

  2. #2
    Expert éminent sénior
    Homme Profil pro
    Analyste/ Programmeur
    Inscrit en
    Juillet 2013
    Messages
    4 631
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Analyste/ Programmeur

    Informations forums :
    Inscription : Juillet 2013
    Messages : 4 631
    Points : 10 559
    Points
    10 559
    Par défaut
    C'est un problème assez trivial en C

    Le langage C n'a pas de notion de chaînes de caractères autre qu'1 tableau de caractères ASCII (valeur entre 0 et 0x7F - 127) terminé par le caractère final - sentinelle '\0'.

    Et donc, ton affection est une affection pointeur (est-ce que tu as un avertissement de ton compilateur ?) : tu prends l'adresse de la variable temp et tu la mets dans tes 2 variables DataUnits[1].Name et DataUnits[2].Name.

    il faut allouer tes 2 variables si c'est nécessaire (est-ce que ce sont des pointeurs ou des tableaux fixes ?) et recopier la chaîne de caractères avec la fonction strcpy ou memcpy.

    Et justement ton sizeof(temp) doit foirer parce qu'il te retourne la taille d'1 pointeur, soit 4 octets (en 32 bits) soit 8 octets (en 64 bits) : tu ne peux pas avoir la taille d'1 tableau fixe C autre que la trimbaler avec le tableau.

  3. #3
    Membre régulier Avatar de ia.jenny
    Profil pro
    Inscrit en
    Août 2007
    Messages
    152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 152
    Points : 78
    Points
    78
    Par défaut
    est-ce que tu as un avertissement de ton compilateur ?)
    ça compile sans err.

    est-ce que ce sont des pointeurs ou des tableaux fixes ?
    bonne question, je ne sais pas trop. j'ai besoin de récupérer les non des Tank.

    J'ai essayé en string, ça change rien.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    struct SDataUnits
    {	
              ..
    	string Name;
    };
    éfectivement avec char temp0[65535]; et char temp1[65535]; ça fonctionne.
    le problème, je ne peux pas faire comme ça, car j’aurai plus de 10 temp

    voici la fonction :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    void CLoad::ConfigUnits(int Nbr)
    {
    	char temp[65535];
     
    	char file[100]; 
    	sprintf(file,"Images/Units/%d/Config.ini", Nbr);
    	LPCSTR localPath=file;
     
    	GetPrivateProfileString("tank","Name","",temp,sizeof(temp),file);
    	DataUnits[Nbr].Name=temp;
    }
    Nom : tank.jpg
Affichages : 207
Taille : 339,1 Ko
    Si tu as une solution

Discussions similaires

  1. Inserer un commentaire dans un fichier Ini
    Par Rustine dans le forum Langage
    Réponses: 5
    Dernier message: 19/10/2005, 18h33
  2. Réponses: 8
    Dernier message: 18/07/2005, 14h04
  3. Unicité de nom de clés dans un fichier .INI
    Par The_Warlord dans le forum Langage
    Réponses: 8
    Dernier message: 11/11/2004, 12h16
  4. lire le point-virgule dans un fichier .ini
    Par juflata dans le forum Langages de programmation
    Réponses: 3
    Dernier message: 05/07/2004, 12h46
  5. [VB6] Api pour supprimer dans un fichier INI
    Par Argonz dans le forum VB 6 et antérieur
    Réponses: 7
    Dernier message: 20/02/2003, 08h16

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