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 :

opération sur les répertoires


Sujet :

C++

  1. #1
    Membre expérimenté
    Profil pro
    Inscrit en
    Février 2004
    Messages
    1 824
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2004
    Messages : 1 824
    Points : 1 544
    Points
    1 544
    Par défaut opération sur les répertoires
    Bonjour à tous,

    Tout d'abord, je souhaiterai savoir comment on peut récupérer le répertoire de l'application (.exe).

    C'est pour laisser à l'utilisateur de choisir s'il définit ses répertoires en relatif ou en absolut.

    Pendant que j'y suis, est-ce que quelqu'un a une méthode simple et rapide pour "switcher" entre les deux?

    Merci,

    A bientôt

    Aurélien.
    "Heureusement qu'il y avait mon nez, sinon je l'aurais pris en pleine gueule" Walter Spanghero

  2. #2
    Expert confirmé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2003
    Messages
    3 549
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Décembre 2003
    Messages : 3 549
    Points : 4 625
    Points
    4 625
    Par défaut
    http://www.boost.org/libs/filesystem/doc/index.htm
    Boost ftw

  3. #3
    Membre expérimenté
    Profil pro
    Inscrit en
    Février 2004
    Messages
    1 824
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2004
    Messages : 1 824
    Points : 1 544
    Points
    1 544
    Par défaut
    Merci, c'est parti pour boost

    A bientôt
    "Heureusement qu'il y avait mon nez, sinon je l'aurais pris en pleine gueule" Walter Spanghero

  4. #4
    Membre expérimenté
    Profil pro
    Inscrit en
    Février 2004
    Messages
    1 824
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2004
    Messages : 1 824
    Points : 1 544
    Points
    1 544
    Par défaut
    Erf, j'ai regardé pour boost... et y'a rien sur les chemins relatifs ou absolue... enfin si, y'a une fonction relative_path... mais j'ai pas compris à quoi elle servait puisque on ne peut pas définir un répertoire de départ et un répertoire d'arrivée...

    Je m'attendais à un truc du style:

    path GetRelativePath(path from, path to)
    et inversement
    path GetAbsolutePath(path ref, path relative)
    "Heureusement qu'il y avait mon nez, sinon je l'aurais pris en pleine gueule" Walter Spanghero

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Février 2005
    Messages
    80
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 80
    Points : 63
    Points
    63
    Par défaut
    j'ai rencontré la fonction windows GetModuleFileName(..) tu peut trouvé le détaille sur MSDN ca te donne le chemin avec le nom de ton prog .exe tu as juste a l'enlever.

    Si non je ne comprent pas trop la différence entre relative et absolute Path.

  6. #6
    Membre expérimenté
    Profil pro
    Inscrit en
    Février 2004
    Messages
    1 824
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2004
    Messages : 1 824
    Points : 1 544
    Points
    1 544
    Par défaut
    Pour le répertoire de l'application, j'ai trouvé mieux...

    Dans les arguments du programme, le argv[0] contient le chemin complet vers l'exécutable.

    Ensuite j'utilise boost::filesystem::path pour récupérer juste le répertoire (ça peut paraître méga fénéant de passer par boost pour ci-peu, mais c'est pour que les nom de répertoires soit standardisé, sinon je vais me retrouver avec parfois des "\" à la fin, parfois rien...).

    Sinon bah en fait l'application que je suis en train de réaliser va travailler sur des répertoires et des fichiers. Quand cest une utilisation en local, il est interessant de spécifier un chemin relatif, afin de pouvoir déplacer le répertoire sans redéfinir les répertoires.

    exemple:
    si l'application est dans c:/apply et qu'on utilise un dossier c:/apply/dossier, vaut mieux spécifier ./dossier que c:/apply/dossier, comme ça si l'on veut déplacer tout le répertoire autrepart, la position relative du répertoire dossier par rapport à celui de l'application ne change pas, ça tournera correctement. Sinon, ça va continuer de pointer sur c:/apply/dossier et ça fera des problèmes puisqu'il est plus là.

    Par ailleurs, on doit pouvoir spécifier un chemin vers un répertoire ou fichier sur un serveur. Dans ce cas là, c'est le chemin absolue que je dois utiliser...

    Donc je voulais faire une case à cocher "relatif" pour laisser l'utilisateur choisir ce qui est le plus flexible pour lui.

    Et pour finir, dans mes boites de dialogue (wxWidgets), on récupère toujours en absolue. Donc je voulais pouvoir le transformer en relatif par rapport au répertoire de l'application, et inversement, s'il est en relatif et qu'il décoche la case, ou pour spécifier le répertoire par défault (en absolu) à la boite de dialog de sélection de fichier/répertoire, il faut retrouver le chemin absolue depuis un chemin relatif par rapport au répertoire de l'application...

    Dois bien y avoir des trucs tout fait pour ça, à moins que je sois une quiche et que j'ai loupé un truc sur les path de boost

    Merci beaaucoup,

    Bon dimanche,

    A bientôt
    "Heureusement qu'il y avait mon nez, sinon je l'aurais pris en pleine gueule" Walter Spanghero

  7. #7
    Expert confirmé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2003
    Messages
    3 549
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Décembre 2003
    Messages : 3 549
    Points : 4 625
    Points
    4 625
    Par défaut
    boost::filesystem est fait pour être portable.
    Après si tu t'intéresses qu'aux systèmes POSIX tu peux utiliser l'API POSIX en C ou ACE.
    Boost ftw

  8. #8
    Membre expérimenté
    Profil pro
    Inscrit en
    Février 2004
    Messages
    1 824
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2004
    Messages : 1 824
    Points : 1 544
    Points
    1 544
    Par défaut
    Heu ben je m'intéresse principalement à Windows, tout en utilisant des libraries portables pour plus tard si l'on souhaite exporter sur une autre plateforme

    Merci
    "Heureusement qu'il y avait mon nez, sinon je l'aurais pris en pleine gueule" Walter Spanghero

Discussions similaires

  1. Opération sur les dossier...
    Par bdaboah dans le forum Langage
    Réponses: 5
    Dernier message: 01/11/2005, 17h28
  2. [OpenGL/C++] Opérations sur les Textures
    Par Bob.Killer dans le forum OpenGL
    Réponses: 6
    Dernier message: 10/08/2005, 10h27
  3. Opérations sur les matrices...
    Par aokiseiichiro dans le forum C
    Réponses: 32
    Dernier message: 28/07/2005, 17h10
  4. opérations sur les bits d'un byte
    Par petitours dans le forum C++Builder
    Réponses: 4
    Dernier message: 10/02/2004, 20h42
  5. opérations sur les dates
    Par coucoucmoi dans le forum Débuter
    Réponses: 2
    Dernier message: 12/08/2003, 11h45

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