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++Builder Discussion :

Mise à jours des données d'un fichier INI


Sujet :

C++Builder

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    385
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 385
    Par défaut Mise à jours des données d'un fichier INI
    Salut les développeurs !

    J'ai besoin d'un coup de main pour résoudre ce petit problème:

    -J'ai un fichier INI sous cette forme:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
     
    [Section1]
    Key11=val11,val12,val13..................         /// se sont des valeurs
    Key21=val21,val22,val23,.............. 
     
    [Section2]
    Key21=val11,val12,val13..................  
    Key22=val21,val22,val23,...............
     
    .......
    ......
    -Ce que je veux faire, c'est la normalisation des valeurs qui sont dans ce fichier ini, c'est à dire je dois chercher le MAX de toutes ces valeurs (val11,val21......), puis je divise chaque valeur par ce max (normalisation classique)!

    -Pour la recherche du MAX j'ai a priori une idée, notamment avec la fonction (ReadSections et ReadSectionValues) pour parcourir toutes les sections.

    -Maintenant je ne sais pas comment peut-on maitre à jours une valeur à partir d'une section et d'une clé sachant que cette clé à plusieurs valeurs (comme si c'était un tableau à 2 dim mais la cellule [section][clé]=val1,val2,......).

    J'espère que j'étais clair dans mes explications!

    Merci à l'avance.

  2. #2
    Inactif  
    Avatar de Mac LAK
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    3 893
    Détails du profil
    Informations personnelles :
    Âge : 51
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Octobre 2004
    Messages : 3 893
    Par défaut
    Tu peux lire (et mettre à jour) ce genre de fichiers via un TIniFile et dérivés. Dans ton cas, faudra lire une chaîne, puis la splitter suivant les caractères "," : pour ça, direction la FAQ.

    EDIT : Une fois un tableau de valeurs obtenu, tu peux obtenir le max facilement, normaliser, et avoir tes valeurs "finales". Ensuite, il te suffit de reconstruire une chaîne séparée par des virgules (tu peux utiliser un std::ostringstream, cf. cette FAQ).

    C'est donc normalisé, et tu n'as plus qu'à reprendre ton objet TIniFile pour mettre à jour la valeur dans le .INI.
    Mac LAK.
    ___________________________________________________
    Ne prenez pas la vie trop au sérieux, de toutes façons, vous n'en sortirez pas vivant.

    Sources et composants Delphi sur mon site, L'antre du Lak.
    Pas de question technique par MP : posez-la dans un nouveau sujet, sur le forum adéquat.

    Rejoignez-nous sur : Serveur de fichiers [NAS] Le Tableau de bord projets Le groupe de travail ICMO

  3. #3
    Membre éclairé
    Homme Profil pro
    Consultant technique
    Inscrit en
    Juillet 2002
    Messages
    519
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Consultant technique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2002
    Messages : 519
    Par défaut
    Si la question est "Comment faire pour lire et écrire dans un fichier ini ?" voici un exemple :
    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
    try {
        TIniFile *ini;
        ini = new TIniFile(ChangeFileExt(Application->ExeName,".INI"));
             WindowState = wsNormal;
             Top = ini->ReadInteger("Form1", "Top", Top);
             Left = ini->ReadInteger("Form1", "Left", Left);
             Width = ini->ReadInteger("Form1", "Width", Width);
             Height = ini->ReadInteger("Form1", "Height", Height);
        Edit18->Text = ini->ReadString("ParamètresServeur", "AdresseEtFichier", Edit18->Text);
        delete ini;
        }
    catch ( ... )
          {
          Application->MessageBox(L"Impossible d'ouvrir le fichier de configuration. Veuillez entrer de nouveaux vos paramètres.",
                    L"Attention", MB_OK + MB_ICONWARNING + MB_TOPMOST);
          }
    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
    try {
        TIniFile *ini;
        ini = new TIniFile(ChangeFileExt( Application->ExeName, ".INI" ) );
           ini->WriteInteger("Form1", "Top", Form1->Top);
           ini->WriteInteger("Form1", "Left", Form1->Left);
           ini->WriteInteger("Form1", "Width", Form1->Width);
           ini->WriteInteger("Form1", "Height", Form1->Height);
        ini->WriteBool("Form1", "InitMax", Form1->WindowState == wsMaximized);
        delete ini;
        }
    catch ( ... )
          {
          Application->MessageBox(L"Impossible d'ouvrir le fichier de configuration. Veuillez entrer de nouveaux vos paramètres.",
                    L"Attention", MB_OK + MB_ICONWARNING + MB_TOPMOST);
          }
    Normalement, tu vas récupérer tes valeurs dans un AnsiString ou un UnicodeString et il faudra ensuite les traiter.

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    385
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 385
    Par défaut
    Merci à vous deux.

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

Discussions similaires

  1. [Toutes versions] VBA : Ouvrir un fichier Word à partir d'Excel en désactivant la mise à jour des données.
    Par napidev dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 18/12/2014, 16h07
  2. [JTable] mise à jour des données
    Par tripop dans le forum Composants
    Réponses: 3
    Dernier message: 04/02/2009, 18h52
  3. Mise à jour des données
    Par Alex063 dans le forum Access
    Réponses: 6
    Dernier message: 31/01/2006, 17h16
  4. MySqlDAC et mise à jour des données
    Par charliejo dans le forum C++Builder
    Réponses: 4
    Dernier message: 02/01/2006, 09h25
  5. mise à jour des données toutes les semaines...
    Par Toff !!!!! dans le forum Access
    Réponses: 20
    Dernier message: 22/12/2005, 11h38

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