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 :

Méthode portable pour sauver un fichier de config


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    162
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Mai 2002
    Messages : 162
    Par défaut Méthode portable pour sauver un fichier de config
    Bonjour,

    Je suis confronté au cas (banal) où je dois sauver des informations de configuration et je me demande s'il existe des outils pour accéder au répertoire de l'utilisateur quelle que soit la plateforme (le /home/moi/ d'unix, le Mes documents de windows).

    De plus, j'aimerais bien que le fichier soit automatiquement caché à la manière du système sur lequel il est (genre un point devant le nom pour unix ou l'attribut pour windows).

    J'espérais que boost saurait m'aider, mais je n'y ai rien vu de tel. Auriez-vous quelques pistes pour moi ?

    Merci.

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    82
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 82
    Par défaut
    Je ne connais pas Boost, par contre si tu peux utiliser les classes de Qt, alors les méthodes QDir::home() ou QDir::homePath() pourraient faire l'affaire.

    Sinon, pourquoi ne pas coder toi-même la fonction qui fait ce travail et qui en fonction de la plateforme irait lire les variables d'environnement appropriées ?

  3. #3
    Membre expérimenté
    Avatar de superspag
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    153
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2006
    Messages : 153
    Par défaut
    Pour mes fichiers de configuration, j'utilise boost::serialization
    => fichier de configuration en xml par exemple

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    162
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Mai 2002
    Messages : 162
    Par défaut
    Citation Envoyé par dabeuliou
    Je ne connais pas Boost, par contre si tu peux utiliser les classes de Qt, alors les méthodes QDir::home() ou QDir::homePath() pourraient faire l'affaire.
    Je n'utilise pas Qt alors du coup ça ferait une sacré dépendance.

    Citation Envoyé par dabeuliou
    Sinon, pourquoi ne pas coder toi-même la fonction qui fait ce travail et qui en fonction de la plateforme irait lire les variables d'environnement appropriées ?
    J'ai l'impression que c'est ce que je vais faire, mais je préfèrerais avoir un truc déjà prêt et complet (genre même pour les OS fantaisistes).

    Citation Envoyé par superspag
    Pour mes fichiers de configuration, j'utilise boost::serialization
    => fichier de configuration en xml par exemple
    boost::serialization, si je me souviens bien, ça permet de sauver le contenu d'une classe, mais est-ce que ça peut m'aider à trouver un dossier dans lequel l'application a le droit d'écrire ?

  5. #5
    Membre expérimenté
    Avatar de superspag
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    153
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2006
    Messages : 153
    Par défaut
    boost::serialization, si je me souviens bien, ça permet de sauver le contenu d'une classe, ...
    Tout à fait, il suffit de lui dire comment tu veux sauver tel et tel attribut et dans quel format serialiser.

    ... mais est-ce que ça peut m'aider à trouver un dossier dans lequel l'application a le droit d'écrire ?
    Je ne comprend pas ?! En gros avec boost::serialization tu transformes :

    Objets => std::ostream
    std::istream => Objets

    Ensuite, de tes streams tu en fait ce que tu veux. Tu peux trés bien enregistrer/lire une stream à partir d'un fichier.

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    162
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Mai 2002
    Messages : 162
    Par défaut
    Citation Envoyé par superspag
    Ensuite, de tes streams tu en fait ce que tu veux. Tu peux trés bien enregistrer/lire une stream à partir d'un fichier.
    Justement, ce que je veux savoir c'est où stocker mes fichiers (un dossier dans lequel l'application peut écrire et propre à l'utilisateur), pas comment.

    Merci quand même

  7. #7
    mat.M
    Invité(e)
    Par défaut
    Citation Envoyé par YéTeeh
    Bonjour,

    Je suis confronté au cas (banal) où je dois sauver des informations de configuration et je me demande s'il existe des outils pour accéder au répertoire de l'utilisateur quelle que soit la plateforme (le /home/moi/ d'unix, le Mes documents de windows).
    C'est pas possible de faire qque chose de standard car sous Windows, internationalisation oblige, il faut supporter Unicode - je ne sais pas si ça existe ou c'est développé sous Unix.
    Donc il faudra utiliser des routines spéciales...

  8. #8
    yan
    yan est déconnecté
    Rédacteur
    Avatar de yan
    Homme Profil pro
    Ingénieur expert
    Inscrit en
    Mars 2004
    Messages
    10 035
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur expert
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2004
    Messages : 10 035
    Par défaut
    J'ai cherché la meme chose y as quelque temps.
    http://www.developpez.net/forums/showthread.php?t=73600
    La seule chose que j'ai trouvé c'est getcwd()
    et cela ne donne que le repertoire courant de l'execution (repertoire ou l'on execute l'exe).
    Attention getdir() change ce repertoire courant.

    De tout ce que j'ai trouver, le mieux est de definir une variable d'environnement et d'utiliser getenv();


    http://www.informit.com/guides/conte...eqNum=245&rl=1

  9. #9
    Membre éclairé
    Inscrit en
    Octobre 2004
    Messages
    616
    Détails du profil
    Informations forums :
    Inscription : Octobre 2004
    Messages : 616
    Par défaut
    Si il possède un .exe installé ( y'a d'autre utilisation qui peuvent posé problème, genre si il accède au disque d'une machine par un résaux donc sans installation d'un logiciel sur les machine cible, mais bon ca devient un peu tordu )

    Dans le cas général, je ne vois pas ce qui ne va pas ( pour ce que l'OP demande : c-a-d stocker des info. de conf. ) avec la méthode ( simple qui puis est) d'un fichier dans un sous repertoire de l'endroit ou est lancé/installé son logiciel ...

  10. #10
    yan
    yan est déconnecté
    Rédacteur
    Avatar de yan
    Homme Profil pro
    Ingénieur expert
    Inscrit en
    Mars 2004
    Messages
    10 035
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur expert
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2004
    Messages : 10 035
    Par défaut
    Citation Envoyé par Clad3
    Si il possède un .exe installé ( y'a d'autre utilisation qui peuvent posé problème, genre si il accède au disque d'une machine par un résaux donc sans installation d'un logiciel sur les machine cible, mais bon ca devient un peu tordu )

    Dans le cas général, je ne vois pas ce qui ne va pas ( pour ce que l'OP demande : c-a-d stocker des info. de conf. ) avec la méthode ( simple qui puis est) d'un fichier dans un sous repertoire de l'endroit ou est lancé/installé son logiciel ...

    si tu lance l'exe situé c:/aaaa/xxx.exe dans le repertoire c:/bbbb/ ben tu va ecrire les fichier de config dans c:/bbbb/ et non dans c:/aaaa/ si tu ne sait pas ou se situ ton exe. Enfin si j'ai bien compris son problème

  11. #11
    Membre éclairé
    Inscrit en
    Octobre 2004
    Messages
    616
    Détails du profil
    Informations forums :
    Inscription : Octobre 2004
    Messages : 616
    Par défaut
    si tu lance l'exe situé c:/aaaa/xxx.exe dans le repertoire c:/bbbb/
    Il est tard, ca ne doit pas aider, mais je n'ai pas comprit .

    Ton exe il est là ou tu l'install, si du déplace juste l'exe et pas le reste du programme [dll,images,fichier config ... ] , tu aura forcément des erreurs.

    Si c'est un raccourci vers l'exe, pas de problème a priori .

    [ en fait j'ai vraiment du mal a comprendre le sens de ta phrase ]

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

Discussions similaires

  1. SaveFileDialog probleme pour sauver 1 fichier
    Par isarian dans le forum C#
    Réponses: 2
    Dernier message: 03/04/2008, 15h07
  2. probleme pour creer un fichier de config
    Par vorhax dans le forum Windows Forms
    Réponses: 6
    Dernier message: 04/05/2007, 17h45
  3. Réponses: 7
    Dernier message: 12/02/2007, 10h11
  4. [Properties] conseil pour l'ecriture d'un fichier de config
    Par yann_p dans le forum Collection et Stream
    Réponses: 6
    Dernier message: 11/10/2006, 12h16
  5. Réponses: 5
    Dernier message: 25/07/2005, 10h17

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