Ecrire dans un fichier de configuration [Résolu]

plop3000 135 Messages postés mercredi 23 mai 2007Date d'inscription 7 avril 2012 Dernière intervention - 8 juin 2007 à 11:37 - Dernière réponse : plop3000 135 Messages postés mercredi 23 mai 2007Date d'inscription 7 avril 2012 Dernière intervention
- 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
Afficher la suite 

10 réponses

Répondre au sujet
Nikoui 794 Messages postés vendredi 24 septembre 2004Date d'inscription 19 août 2008 Dernière intervention - 8 juin 2007 à 15:07
+3
Utile
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
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de Nikoui
plop3000 135 Messages postés mercredi 23 mai 2007Date d'inscription 7 avril 2012 Dernière intervention - 8 juin 2007 à 15:21
+3
Utile
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      
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de plop3000
SharpMao 1025 Messages postés mardi 4 février 2003Date d'inscription 7 juin 2010 Dernière intervention - 8 juin 2007 à 11:41
0
Utile
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)
Commenter la réponse de SharpMao
plop3000 135 Messages postés mercredi 23 mai 2007Date d'inscription 7 avril 2012 Dernière intervention - 8 juin 2007 à 11:53
0
Utile
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 ?
Commenter la réponse de plop3000
cs_Bidou 5507 Messages postés dimanche 4 août 2002Date d'inscription 20 juin 2013 Dernière intervention - 8 juin 2007 à 12:27
0
Utile
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-
Commenter la réponse de cs_Bidou
Nikoui 794 Messages postés vendredi 24 septembre 2004Date d'inscription 19 août 2008 Dernière intervention - 8 juin 2007 à 14:11
0
Utile
Et rajouter la clause using qui va bien pour avoir accès au namespace Properties...
Commenter la réponse de Nikoui
plop3000 135 Messages postés mercredi 23 mai 2007Date d'inscription 7 avril 2012 Dernière intervention - 8 juin 2007 à 15:00
0
Utile
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 ?
 
Commenter la réponse de plop3000
plop3000 135 Messages postés mercredi 23 mai 2007Date d'inscription 7 avril 2012 Dernière intervention - 8 juin 2007 à 15:22
0
Utile
Désolé c'est tout mal indenté j'ai pourtant fais attention 
Commenter la réponse de plop3000
SharpMao 1025 Messages postés mardi 4 février 2003Date d'inscription 7 juin 2010 Dernière intervention - 8 juin 2007 à 15:32
0
Utile
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)
Commenter la réponse de SharpMao
plop3000 135 Messages postés mercredi 23 mai 2007Date d'inscription 7 avril 2012 Dernière intervention - 8 juin 2007 à 15:46
0
Utile
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 
Commenter la réponse de plop3000

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.