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 :

[C#] Comment utiliser XML comme avant avec un fichier INI ?


Sujet :

C#

  1. #1
    Membre actif

    Homme Profil pro
    Inscrit en
    Septembre 2002
    Messages
    472
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Septembre 2002
    Messages : 472
    Points : 262
    Points
    262
    Par défaut [C#] Comment utiliser XML comme avant avec un fichier INI ?
    Bonjour,

    Ma question est assez simple, je cherche à utiliser un fichier XML pour stocker les informations de configuration de mon application comme on peut le faire avec un fichier *.INI ?

    Pouvez-vous m'expliquer comment faire ?

    Merci d'avance,
    Mathieu

  2. #2
    Rédacteur
    Avatar de Thomas Lebrun
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    9 161
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 9 161
    Points : 19 434
    Points
    19 434
    Par défaut
    Regade du coté des fichiers de configuration App.config

  3. #3
    Membre actif

    Homme Profil pro
    Inscrit en
    Septembre 2002
    Messages
    472
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Septembre 2002
    Messages : 472
    Points : 262
    Points
    262
    Par défaut
    Bonjour,

    J'ai trouvé ça dans la FAQ :
    http://faqcsharp.developpez.com/?pag...p_config_write

    Les informations stockées sont dans un fichier ?
    Si oui, quel nom et extension a-t-il ?

    Merci,
    Mathieu

  4. #4
    Rédacteur
    Avatar de Thomas Lebrun
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    9 161
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 9 161
    Points : 19 434
    Points
    19 434
    Par défaut
    Oui, les infos sont stockées dans un fichier qui s'appelle:

    nom_de_ton_application.exe.config

    Mais cette méthode (écrire dans un fichier de conf) n'est valable qu'avec le FX 2.0

    Pour le FX 1.0/1.1, il faut passer par une classe que j'ai développée:
    ConfigReaderWriter: http://morpheus.developpez.com/trucs/classes/


    A+

  5. #5
    Membre actif

    Homme Profil pro
    Inscrit en
    Septembre 2002
    Messages
    472
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Septembre 2002
    Messages : 472
    Points : 262
    Points
    262
    Par défaut
    Bonjour,

    OK!
    J'utilise le Framework v2 donc je suis tranquille

    Merci,
    Mathieu

  6. #6
    Membre actif

    Homme Profil pro
    Inscrit en
    Septembre 2002
    Messages
    472
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Septembre 2002
    Messages : 472
    Points : 262
    Points
    262
    Par défaut
    Bonjour,

    Je viens d'essayer le code suivant qui est tiré de la FAQ C# :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    
    private void button1_Click(object sender, EventArgs e)
    {
    System.Configuration.Configuration config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
    config.AppSettings.Settings["test"].Value = textBox1.Text;
    config.Save(ConfigurationSaveMode.Modified);
    }
    
    Mais j'ai une exception sur la seconde ligne quand je clique sur mon bouton :
    L'exception System.NullReferenceException n'a pas été gérée
    Message="La référence d'objet n'est pas définie à une instance d'un objet."
    Source="WindowsApplication2"
    Que dois-je faire pour réussir à le faire marcher ?

    Merci,
    Mathieu

  7. #7
    Membre actif

    Homme Profil pro
    Inscrit en
    Septembre 2002
    Messages
    472
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Septembre 2002
    Messages : 472
    Points : 262
    Points
    262
    Par défaut
    Bonjour,

    J'apporte un peu plus de précision :



    J'ai ajouté la référence dans mon projet et mis le :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    
    using System.Configuration;
    
    J'ai également ajouté mon paramètre mais sans succès :



    Savez-vous ce que je dois faire pour faire fonctionner mon code ?

    Merci d'avance,
    Mathieu

  8. #8
    Rédacteur
    Avatar de Thomas Lebrun
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    9 161
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 9 161
    Points : 19 434
    Points
    19 434
    Par défaut
    Hum.. Etrange.


    Et en débuggant Pas-à-Pas, regarde de quoi est constitué

    config.AppSettings.Settings

  9. #9
    Membre actif

    Homme Profil pro
    Inscrit en
    Septembre 2002
    Messages
    472
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Septembre 2002
    Messages : 472
    Points : 262
    Points
    262
    Par défaut
    Bonjour,

    Voici ce que j'ai au pas à pas :



    Je passe de Borland C++ Builder à C#, le début est un peu dur mais le langage à l'air bien sympathique

    Il me créé bien le fichier "WindowsApplication2.exe.config" et "WindowsApplication2.vshost.exe.conf" qui est le suivant :

    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
    <?xml version="1.0" encoding="utf-8" ?>
    <configuration>
        <configSections>
            <sectionGroup name="userSettings" type="System.Configuration.UserSettingsGroup, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" >
                <section name="WindowsApplication2.Properties.Settings" type="System.Configuration.ClientSettingsSection, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" allowExeDefinition="MachineToLocalUser" requirePermission="false" />
            </sectionGroup>
        </configSections>
        <userSettings>
            <WindowsApplication2.Properties.Settings>
                <setting name="test" serializeAs="String">
                    <value />
                </setting>
            </WindowsApplication2.Properties.Settings>
        </userSettings>
    </configuration>
    Merci pour votre aide,
    Mathieu

  10. #10
    Rédacteur
    Avatar de Thomas Lebrun
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    9 161
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 9 161
    Points : 19 434
    Points
    19 434
    Par défaut
    Bizarre, la collection Settings semble être vide

    Essaye, à tout hasard, de changer la portée de ta variable test

  11. #11
    Membre actif

    Homme Profil pro
    Inscrit en
    Septembre 2002
    Messages
    472
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Septembre 2002
    Messages : 472
    Points : 262
    Points
    262
    Par défaut
    Bonsoir,

    J'ai changé la portée, le problème est le même...

    Ma propriété "File" est vide (dans mon post précédent), est-ce normal ?

    Voici ce que j'ai au débogeur :



    Je suis vraiment perdu là

    Merci,
    Mathieu

  12. #12
    Membre actif

    Homme Profil pro
    Inscrit en
    Septembre 2002
    Messages
    472
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Septembre 2002
    Messages : 472
    Points : 262
    Points
    262
    Par défaut
    Salut,

    Après pas mal de bidouille, j'ai repris à zero mon code pour arriver à ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    
    System.Configuration.Configuration config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
    config.AppSettings.Settings.Add("test",DateTime.Now.ToLongTimeString() + " ");
    config.Save(ConfigurationSaveMode.Full);
    textBox1.Text = config.AppSettings.Settings["test"].Value;
    
    Le programme fonctionne, les informations sont bien conservées par contre un problème et de taille... Une fois le programme fermé, le fichier *.config se reinitialise, il n'est pas enregistré... Il semble être purement dynamique

    Savez-vous pourquoi ?

    EDIT : Ce problème est rencontré uniquement en compilation "debug" et dans Visual Studio 2005 (*.vshost.exe), si je lance le programme en dehors de l'IDE, celui-ci enregistre bien les informations.

    Merci,
    Mathieu

  13. #13
    Rédacteur
    Avatar de Thomas Lebrun
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    9 161
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 9 161
    Points : 19 434
    Points
    19 434
    Par défaut
    Normal: a chaque recompilation, VS 2005 re-créé le fichier .config

  14. #14
    Membre actif

    Homme Profil pro
    Inscrit en
    Septembre 2002
    Messages
    472
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Septembre 2002
    Messages : 472
    Points : 262
    Points
    262
    Par défaut
    Salut,

    Je suis entièrement d'accord avec toi, par contre, voici ce qu'il me fait :
    - Lancement du programme (xxx.exe ou xxx.vshost.exe via Visual Studio) avec le fichier par défaut
    - Modification dynamique par le code du fichier *.config (l'édition de ce dernier montre que les informations sont bien enregistrées)
    - Fermeture du programme (après l'avoir fermé, on va éditer le fichier *.config et celui-ci a été remis par defaut, les informations stockées précédement sont perdues)

    Ce problème n'est pas bloquant puisque ça marche en dehors de Visual Studio, cependant, c'est étrange et pas pratique

    Mathieu

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

Discussions similaires

  1. Comment utiliser XML de façon hierarchique comme en .Net?
    Par MicaelFelix dans le forum WinDev
    Réponses: 2
    Dernier message: 04/01/2011, 17h08
  2. Réponses: 7
    Dernier message: 17/01/2008, 10h03
  3. comment utiliser le message WM_QUERYENDSESSION avec delphi6
    Par evarisnea dans le forum API, COM et SDKs
    Réponses: 4
    Dernier message: 31/08/2005, 14h57
  4. comment utiliser de l'OpenGL avec du Java ?
    Par DjiZ dans le forum OpenGL
    Réponses: 3
    Dernier message: 14/01/2004, 15h21
  5. Comment utiliser les styles XP avec Dev-C++?
    Par abraxas dans le forum Dev-C++
    Réponses: 3
    Dernier message: 05/10/2003, 19h47

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