Ecrire dans un fichier de configuration

Résolu
plop3000 Messages postés 135 Date d'inscription mercredi 23 mai 2007 Statut Membre Dernière intervention 7 avril 2012 - 8 juin 2007 à 11:37
plop3000 Messages postés 135 Date d'inscription mercredi 23 mai 2007 Statut Membre Dernière intervention 7 avril 2012 - 8 juin 2007 à 15:46
Bonjour à tous,

Je souhaite faire un fichier de configuration pour une application. Je l'ai fait et j'arrive bien à récupérer les valeurs qui se trouvent dans ce fichier mais je ne parviens pas à écrire dans ce fichier.
Mon but serait de regarder si dans ce fichier il y a déjà une ligne (prenons comme exemple la ligne suivante :  <

addkey="maCle
"
value="maValeur
"
/>

Si cette ligne n'existe pas, je voudrais l'ajouter à mon fichier app.config, et si cette ligne existe déjà, je voudrais "simplement" modifier le champ valeur. J'ai donc penser faire une fonction qui permettent d'écrire dans le fichier de  configuration mais je n'y parviens pas. La structure de ma fonction est la suivante :
private

void EcrireDansConfig(
String cle,
String val){

//Rajoute ou modifie (si deja present) une ligne dans

//le fichier de config, ayant pour cle "cle" et pour

//valeur "val"System.Configuration.

Configuration config = 
   ConfigurationManager.OpenExeConfiguration
ConfigurationUserLevel.None);

//Si la ligne ayant pour cle "cle" n'existe pas, il faut

//totalement creer la ligne

if (config.Sections[cle] ==
null){

     //là je ne vois pas comment faire

}

//Sinon, il faut seulement changer l'ancienne valeur

//par la nouvelle valeur "val"

else{

//Suppression de l'ancienne ligne

                  ???

//Creation de la nouvelle

                  ???
}

}

Voila, j'espère avoir bien expliqué le problème.
Merci pour votre aide
A voir également:

10 réponses

Nikoui Messages postés 794 Date d'inscription vendredi 24 septembre 2004 Statut Membre Dernière intervention 19 août 2008 13
8 juin 2007 à 15:07
Ce que te propose SharpMao  marche très bien :
Properties.Settings.Default.Test = "Une nouvelle valeur";

Properties.Settings.Default.Save();

Et pour la lecture, c'est le même principe :
Properties.Settings.Default.Reload();

string uneVariable = Properties.Settings.Default.Test
3
plop3000 Messages postés 135 Date d'inscription mercredi 23 mai 2007 Statut Membre Dernière intervention 7 avril 2012 1
8 juin 2007 à 15:21
Merci beaucoup ça MARCHE !!!

Je met le code pour écrire et lire dans un fichier de config (App.config) si ça peut servir

private

String LireDansConfig(
String nomDuChamp){

            //récupère dans le fichier de config,  la valeur du champ nomDuChamp et la retourne            Properties.

Settings.Default.Reload();

            string valeurChampConfig = Properties.
Settings.Default.derniereDateTraitee;

   return valeurChampConfig;}

private
void EcrireDansConfig(
String cle,
String val){          

//Rajoute ou modifie (si d‚ja pr‚sent) une ligne dans

             //le fichier de config, ayant pour cle "cle" et pour

             //valeur "val"                  Properties.

Settings.Default.derniereDateTraitee =
"06/06/1985";               Properties.

Settings.Default.Save();}

MERCI ENCORE      
3
SharpMao Messages postés 1024 Date d'inscription mardi 4 février 2003 Statut Membre Dernière intervention 7 juin 2010 69
8 juin 2007 à 11:41
Hello,

Si tu travailles avec VS2005, tu as deux types d'entrées dans le fichier de config : User et Application.
La différence se situe essentiellement dans le fait que les types User peuvent être modifiés très facilement.
Exemple pour une propriété nommée Test et de type string

Properties.Settings.Default.Test = "Une nouvelle valeur";

Properties.Settings.Default.Save();

Amicalement, SharpMao

"C'est pas parce qu'ils sont nombreux à avoir tort qu'ils ont raison!"
(Coluche / 1944-1986 / Pensées et anecdotes)
0
plop3000 Messages postés 135 Date d'inscription mercredi 23 mai 2007 Statut Membre Dernière intervention 7 avril 2012 1
8 juin 2007 à 11:53
Merci pour ta réponse SharpMao

Oui je travaille sous VS2005. Le fait de faire  :  Properties.Settings.Default.Test = "Une nouvelle valeur";
me changerait directement mon fichier de configuration App.config ?
J'ai essayé ton code mais j'ai l'erreur "le nom properties n'existe pas", comment faut il le définir ?
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_Bidou Messages postés 5487 Date d'inscription dimanche 4 août 2002 Statut Membre Dernière intervention 20 juin 2013 61
8 juin 2007 à 12:27
Salut,
Il faut aller dans les propriétés du projet, onglet 'Settings'.
Tu peux alors définir le nom, le type, la valeur et le scope pour ta variable.

<hr />
-Blog-
0
Nikoui Messages postés 794 Date d'inscription vendredi 24 septembre 2004 Statut Membre Dernière intervention 19 août 2008 13
8 juin 2007 à 14:11
Et rajouter la clause using qui va bien pour avoir accès au namespace Properties...
0
plop3000 Messages postés 135 Date d'inscription mercredi 23 mai 2007 Statut Membre Dernière intervention 7 avril 2012 1
8 juin 2007 à 15:00
Je voudrais utiliser les fonctions classiques des fichiers de config pour garder la même façon de travailler pour la lecture ET pour l'écriture d'un fichier de config... Par exemple pour la lecture, j'ai fais la fonction suivante (qui fonctionne sans problème) :

private

String LireDansConfig(
String nomDuChamp){

//récupere dans le fichier de config,

//la valeur du champ nomDuChamp et la retourneSystem.Configuration.

Configuration config =

ConfigurationManager.OpenExeConfiguration(
ConfigurationUserLevel.None);

return config.AppSettings.Settings[nomDuChamp].Value;}

Il n'existe donc pas de fonction "similaires" pour écrire dans le fichier de config ??? Ce serait étonnant tout de même... Mais c'est vrai qu'après recherches, on trouve facilement de la doc sur la lecture d'un fichier de config, mais pour l'écriture dans ce dernier je ne trouve rien de comparable.
Quelqu'un connaitrait une technique ou un lien sur lequel me diriger ?
 
0
plop3000 Messages postés 135 Date d'inscription mercredi 23 mai 2007 Statut Membre Dernière intervention 7 avril 2012 1
8 juin 2007 à 15:22
Désolé c'est tout mal indenté j'ai pourtant fais attention 
0
SharpMao Messages postés 1024 Date d'inscription mardi 4 février 2003 Statut Membre Dernière intervention 7 juin 2010 69
8 juin 2007 à 15:32
Encore un détail, si c'est pour une date, tu peux mettre directement une valeur de type date dedans depuis l'éditeur,
Comme ça tu peux faire

Settings
.Default.derniereDateTraitee = DateTime.Now;

Et

DateTime last = Settings.Default.derniereDateTraitee ;

Amicalement, SharpMao

"C'est pas parce qu'ils sont nombreux à avoir tort qu'ils ont raison!"
(Coluche / 1944-1986 / Pensées et anecdotes)
0
plop3000 Messages postés 135 Date d'inscription mercredi 23 mai 2007 Statut Membre Dernière intervention 7 avril 2012 1
8 juin 2007 à 15:46
Ok merci, j'en prend note, mais pour l'instant je ne sais pas encore si le champ que j'aurai à récupérer sera une "vraie" date ou si se sera un string qui ressemble à une date 
0
Rejoignez-nous