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 :

renommer section .ini [Débutant(e)]


Sujet :

C++Builder

  1. #1
    Invité
    Invité(e)
    Par défaut renommer section .ini
    Bonjour,
    j'aurais besoin d'aide concernant les section d'un fichier .ini.

    Mon fichier .ini est fait comme ceci:
    [scrutage1]
    cle1
    cle2
    ...
    [scrutage2]
    cle1
    cle2
    ...
    [scrutage3]
    cle1
    cle2
    ...
    [scrutage4]
    cle1
    cle2
    ...


    et si je supprime par exemple [srcutation2] avec toutes ces clefs, j'aurais besoin que "[scrutation3]" soit renommer en "[scrutation2]" avec toutes ces clefs (celle de [scrutation3]). et ainsi de suite avec [scrutation4] renommer en [scrutation3].

    Et-il possible de faire sa en quelque ligne ? ou faut-il que je sauvegarde toutes mes clefs, que j'efface la section, que je la recrée avec l'autre nom et que je recopies les clefs?

    Merci d'avance pour l'attention porté a mon problème.

  2. #2
    Membre Expert
    Avatar de sat83
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2004
    Messages
    1 040
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2004
    Messages : 1 040
    Par défaut
    TIniFile ne permet pas de faire ce genre de choses en natif.

    Pour avoir le comportement souhaité, tu est obligé de le coder toi même.

    Après, peut-être serait il plus judicieux de repenser ta façon d'enregistrer tes données.

  3. #3
    Invité
    Invité(e)
    Par défaut
    Merci pour ta réponse, je vais donc me coder sa, sa va sa n'as rien de méchant.

    Pour culture personnel tu dit que TIniFile ne permet pas de le faire en natif, existe-il quelque chose qui en soit capable
    Il existerait autre chose pour traiter les fichier .ini?

  4. #4
    Membre Expert
    Avatar de sat83
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2004
    Messages
    1 040
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2004
    Messages : 1 040
    Par défaut
    Citation Envoyé par metalange Voir le message
    Pour culture personnel tu dit que TIniFile ne permet pas de le faire en natif, existe-il quelque chose qui en soit capable
    Il existerait autre chose pour traiter les fichier .ini?
    J'ai toujours utiliser TIniFile pour manipuler des fichiers INI, je ne sais pas si des alternatives existes.

    A noter que l'utilité première d'un fichier INI est la sauvegarde de paramètres et d'informations. Il n'est pas prévu à la base pour gérer un ordre ou des trucs complexes.

  5. #5
    Membre Expert
    Avatar de sat83
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2004
    Messages
    1 040
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2004
    Messages : 1 040
    Par défaut
    Petite fonction non-testée, qui peut te servir de base:
    A noter qu'elle peut très fortement être améliorée et optimisée!
    De plus, aucun test n'est fait sur l'existence ou la cohérence du fichier et des sections! A améliorer, donc...


    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
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    //en partant du principe que tes sections s'appellent toujours scrutageX avec X croisant:
    void SupprimerEtDecale( AnsiString inifile, int position )
    {
     
      TIniFile *ini = new TIniFile( inifile ) ;
      DeleteFile( ChangeFileExt(inifile, ".tmp" ) );
      TIniFile *iniTMP = new TIniFile( ChangeFileExt(inifile, ".tmp" ) ) ; //fichier temporaire
      ini->EraseSection( "scrutage" + IntToStr(position) ) ;
     
      TStringList *sections = new TStringList() ;
      ini->ReadSections( sections ) ;
      for( int i=0; i< sections->Count; i++ )
      {
        TStringList *keys = new TStringList() ;
        ini->ReadSectionValues( sections->Strings[i],keys ) ;
        for( int j=0; j < keys->Count; j++ )
        {
          iniTMP->WriteString( "scrutage" + IntToStr(i+1), keys->Strings[j], ini->ReadString( sections->Strings[i],keys->Strings[j],"") ) ;
        }
        delete keys ;
      }
      delete sections ;
      delete ini ;
      delete iniTMP ;
     
      DeleteFile( inifile ) ;
      RenameFile( ChangeFileExt(inifile, ".tmp" ) , inifile ) ;
    }
    Pour supprimer la 3ième section:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SupprimerEtDecale( "C:\\essai.ini", 3 ) ;

  6. #6
    Invité
    Invité(e)
    Par défaut
    Merci pour ton code c'est bien plus que ce que je demandais, grâce a toi je vais pouvoir gagner du temps. Je vais utiliser ce que tu as fait, le modelé a mes exigences et je te dit ce qu'il en est.

  7. #7
    Invité
    Invité(e)
    Par défaut
    Je viens de finir de tester le code que tu ma donnée mais j'ai un petit souci,
    il rajoute systématiquement a chaque clef le charactere "=" a la fin ce qui me donne quelque chose du genre:

    source=C:\test1=

    et je ne trouve pas ou est-ce qu'il trouve et rajoute ce "=".

    As-tu le même problème?

  8. #8
    Membre Expert
    Avatar de sat83
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2004
    Messages
    1 040
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2004
    Messages : 1 040
    Par défaut
    Remplace la ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ini->ReadSectionValues( sections->Strings[i],keys ) ;
    par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ini->ReadSection( sections->Strings[i],keys ) ;

  9. #9
    Invité
    Invité(e)
    Par défaut
    C'est parfait merci!

    Si je peut encore un peu abusé de tes compétences, quelle était la différence entrent les deux : ReadSection et ReadSectionValues?
    je n'ai connu que l'école, je ne travaille que depuis peu donc excuse mon ignorance si la question te semble bête

    Dans tous les cas merci pour ton aide, je passe le sujet en résolu.

  10. #10
    Membre Expert
    Avatar de sat83
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2004
    Messages
    1 040
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2004
    Messages : 1 040
    Par défaut
    ReadSection retourne uniquement la liste des clé contenues dans une section
    ReadSectionValues retourne les clés et les valeurs contenues dans une section

    ReadSection:
    cle1
    cle2
    ReadSectionValues:
    cle1=111
    cle2=222

  11. #11
    Invité
    Invité(e)
    Par défaut
    okidoki merci d'avoir prit le temps de répondre , c'est très clair maintenant leurs différences.

    Bonne continuation,
    cordialement


    Adrien PECLET

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

Discussions similaires

  1. Réponses: 5
    Dernier message: 22/08/2006, 10h35
  2. espace entre sections ini
    Par quarkz dans le forum Langage
    Réponses: 4
    Dernier message: 06/09/2005, 11h22
  3. renvoyer toutes les section d'un fichier .ini
    Par user_steph dans le forum VB 6 et antérieur
    Réponses: 8
    Dernier message: 26/07/2005, 16h06
  4. fichier ini -> recuperer toute les sections
    Par abignon dans le forum MFC
    Réponses: 2
    Dernier message: 08/04/2004, 18h46

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