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

Delphi Discussion :

Comment récupérer le répertoire parent d'un répertoire?


Sujet :

Delphi

  1. #1
    Membre habitué Avatar de Jayceblaster
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    420
    Détails du profil
    Informations personnelles :
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Juin 2005
    Messages : 420
    Points : 174
    Points
    174
    Par défaut Comment récupérer le répertoire parent d'un répertoire?
    Bonjour....

    Je pense que m'a question a deja fait l'objet de post et que des articles doivent en parler mais y a tellement de chose sur la gestion des fichiers et des répertoires que je n'ai pas trouvé mon bonheur (je suis noyé ) .

    Alors voila...

    Je souhaite connaitre le répertoire parent d'un répertoire donné...
    A quelle propriété dois je faire appel?

    Merci d'avance...

  2. #2
    Membre confirmé
    Avatar de Philippe Gormand
    Inscrit en
    Mars 2002
    Messages
    330
    Détails du profil
    Informations forums :
    Inscription : Mars 2002
    Messages : 330
    Points : 647
    Points
    647
    Par défaut Repertoire
    Bonjour.


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    Var
       Repertoir, RepertoireActuel : String;
     
    begin
     
    Repertoir := ExtractFilePath(RepertoirActuel);
    A+

  3. #3
    Membre expert
    Avatar de TicTacToe
    Inscrit en
    Septembre 2005
    Messages
    1 940
    Détails du profil
    Informations personnelles :
    Âge : 51

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 940
    Points : 3 575
    Points
    3 575
    Par défaut
    J'ajouterais ceci pour être sur du coup
    Car si RepertoirActuel à le slash de fin, je pense que ca marche pas (mais à vérifier )

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     Repertoir := ExtractFilePath(ExcludeTrailingPathDelimiter( RepertoirActuel ) );

  4. #4
    Membre habitué Avatar de Jayceblaster
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    420
    Détails du profil
    Informations personnelles :
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Juin 2005
    Messages : 420
    Points : 174
    Points
    174
    Par défaut
    Le slach de fin?????

  5. #5
    Membre habitué Avatar de Jayceblaster
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    420
    Détails du profil
    Informations personnelles :
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Juin 2005
    Messages : 420
    Points : 174
    Points
    174
    Par défaut
    Ah tu veux parler du slach de fin de chaine c'est ca?

  6. #6
    Membre expert
    Avatar de TicTacToe
    Inscrit en
    Septembre 2005
    Messages
    1 940
    Détails du profil
    Informations personnelles :
    Âge : 51

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 940
    Points : 3 575
    Points
    3 575
    Par défaut
    c:\windows\system

    et

    c:\windows\system\


    Tout 2 représente un dossier
    Le 2eme à l'(anti) slash de fin.

    Mais je ne suis pas sur que ExtractFileName du 1er et du 2eme renvoie la même chose !
    Pour être sur dans le code précédent, j'enlève systématiquement le slash de fin, afin que la fonction ExtractFilePath(...) considère 'System' comme le nom d'un fichier et renvoie le chemin: 'c:\windows\'

  7. #7
    Membre habitué Avatar de Jayceblaster
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    420
    Détails du profil
    Informations personnelles :
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Juin 2005
    Messages : 420
    Points : 174
    Points
    174
    Par défaut
    je ne suis pas sur que ExtractFilePath convienne dans mon cas....

    Car moi je cherche a récupérer le repertoire parent d'un répertoire qui n'est pas forcément le répertoire courant de mon appli....

  8. #8
    Membre expert
    Avatar de TicTacToe
    Inscrit en
    Septembre 2005
    Messages
    1 940
    Détails du profil
    Informations personnelles :
    Âge : 51

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 940
    Points : 3 575
    Points
    3 575
    Par défaut
    Avant de dire cela...
    As tu au moins essayé le code fourni et testé ?????

    et la variable 'RepertoireActuel' tu y mets le répertoire source que tu souhaites. J'espere que tu faisais pas allusion a ceci dans ton précédent post quand même .

  9. #9
    Membre habitué Avatar de Jayceblaster
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    420
    Détails du profil
    Informations personnelles :
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Juin 2005
    Messages : 420
    Points : 174
    Points
    174
    Par défaut
    Je suis novice mais quand meme....( j'ai bien compris que RépertoireActuel c'est le nom du répertoire cherché)
    Et si je dis que ca ne correspond pas c'est que j'ai essayé...
    si je met:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    <div style="text-align: left;">Var
       Repertoir: String;
     
    begin
     
    Repertoir := ExtractFilePath('toto');</div>
    en suposant que j'ai un chemin de type c:\titi\tata\toto\.....

    la variable Repertoir ne prend pas la valeur 'tata' ...
    et c'est ca que je cherche a faire moi....
    Pour l'instant la variable Repertoire reste vide ''.

  10. #10
    Membre expert
    Avatar de TicTacToe
    Inscrit en
    Septembre 2005
    Messages
    1 940
    Détails du profil
    Informations personnelles :
    Âge : 51

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 940
    Points : 3 575
    Points
    3 575
    Par défaut
    ah.. ca change tout

    tu fournis un dossier 'relatif' dans ce cas.

    Alors il faut faire:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     Repertoir := ExtractFilePath(ExcludeTrailingPathDelimiter( ExpandFileName( RepertoirActuel )  ) );
    ExpandFileName transforme un chemin/fichier relatif, en chemin complet.
    Encore faut-il que tu sois dans le bon dossier....
    Là pas de miracle, si il trouve pas, la fonction va pas scanner tes disk pour trouver le dossier 'toto' !

  11. #11
    Membre confirmé
    Avatar de Philippe Gormand
    Inscrit en
    Mars 2002
    Messages
    330
    Détails du profil
    Informations forums :
    Inscription : Mars 2002
    Messages : 330
    Points : 647
    Points
    647
    Par défaut
    Evidemment, évidement.

    Manque de compréhension.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
       Repertoir: String;
     
    begin
     
    Repertoir := ExtractFilePath('c:\titi\tata\toto\');
    Renvera 'c:\titi\tata'

    Si tu ne connais pas le chemin de toto et que tu veux retrouver son chemin complet, c'est different.

    Utilise ExpendFileName ou bien FindFirts. Il y a des exemples dans l'aide de Delphi.

    Bon courage.

  12. #12
    Membre expert
    Avatar de TicTacToe
    Inscrit en
    Septembre 2005
    Messages
    1 940
    Détails du profil
    Informations personnelles :
    Âge : 51

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 940
    Points : 3 575
    Points
    3 575
    Par défaut
    Citation Envoyé par Philippe Gormand
    Evidemment, évidement.

    Manque de compréhension.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
       Repertoir: String;
     
    begin
     
    Repertoir := ExtractFilePath('c:\titi\tata\toto\');
    Renvera 'c:\titi\tata'

    Si tu ne connais pas le chemin de toto et que tu veux retrouver son chemin complet, c'est different.
    (en dehors du problème du chemin relatif)
    Utilise ExpendFileName ou bien FindFirts. Il y a des exemples dans l'aide de Delphi.

    Bon courage.
    FAUX !

    ExtractFilePath('c:\titi\tata\toto\'); renvoie c:\titi\tata\toto\
    ExtractFilePath('c:\titi\tata\toto'); renvoie c:\titi\tata\

    --> c'est pour cela qu'il faut faire un ExcludeTrailingPathDelimiter sur le chemin à traiter.

  13. #13
    Expert éminent Avatar de Graffito
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    5 993
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 5 993
    Points : 7 903
    Points
    7 903
    Par défaut
    Bonjour,

    Pour récupérer un nom complet normalisé (sans "..") :
    ExpandFileName et ExpandUNCFilename

    Ensuite, il ne reste plus qu'à faire un ExtractFilePath (après suppression éventuelle du '\' final)

  14. #14
    Membre expert
    Avatar de TicTacToe
    Inscrit en
    Septembre 2005
    Messages
    1 940
    Détails du profil
    Informations personnelles :
    Âge : 51

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 940
    Points : 3 575
    Points
    3 575
    Par défaut
    Citation Envoyé par Graffito
    Bonjour,

    Pour récupérer un nom complet normalisé (sans "..") :
    ExpandFileName et ExpandUNCFilename

    Ensuite, il ne reste plus qu'à faire un ExtractFilePath (après suppression éventuelle du '\' final)
    heu -1 Graffito pour ce coup (après le +1 pour le poste sur le zip, il fallait bien rétablir l'équilibre

    déjà été dit tout ca

  15. #15
    Expert éminent Avatar de Graffito
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    5 993
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 5 993
    Points : 7 903
    Points
    7 903
    Par défaut
    Ah oui,

    Tic Tac avait déjà mentionné les fonctions Expand...

Discussions similaires

  1. Réponses: 4
    Dernier message: 21/01/2013, 12h54
  2. Réponses: 5
    Dernier message: 25/06/2007, 23h25
  3. Réponses: 6
    Dernier message: 14/06/2006, 16h55
  4. Réponses: 12
    Dernier message: 23/05/2006, 09h58
  5. Comment récupérer les sous répertoires d'un répertoire
    Par charliejo dans le forum C++Builder
    Réponses: 2
    Dernier message: 15/02/2006, 08h47

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