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

Langage Delphi Discussion :

System.IOUtils.TPath se comporte bizarrement


Sujet :

Langage Delphi

  1. #1
    Membre expert

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2007
    Messages
    3 487
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2007
    Messages : 3 487
    Points : 3 120
    Points
    3 120
    Par défaut System.IOUtils.TPath se comporte bizarrement
    re bonjour

    J'ai une variable nommée PAth qui arrive dans une fonction sous forme de paramètre.
    Dans la fonction je fais:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    var
      Pth, S: string;
    begin
      Pth := TPath.Combine(Path, '\Microsoft\Windows\Start Menu\Programs');
    J'affiche Pth et là je vois : '\Microsoft\Windows\Start Menu\Programs'

    Mon chemin d'entrée a disparu.
    Pour vérifier je rajoute une ligne juste après:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
     
    var
      Pth, S: string;
    begin
      Pth := TPath.Combine(Path, '\Microsoft\Windows\Start Menu\Programs');
     
      Pth := Path + '\Microsoft\Windows\Start Menu\Programs';
    Et là, surprise, 'C:\Users\moi\AppData\Roaming\Microsoft\Windows\Start Menu\Programs'

    Le TPath.Combine est pourtant censé faire le même travail.

    Comme c'est la première fois que ça m'arrive, j'aimerais savoir si l'un de vous a déjà eu le même genre de problème ?
    Est-ce qu'il pourrait y avoir des chemins spécifiques qui seraient la cause de ce bug ?


    En fait, c'est

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
          // if Path2 is absolute, return it; if not, combine the paths
          if IsPathRooted(Path2) or IsExtendedPrefixed(Path2) then
    qui ne passe pas dans System.IOUtils.

    et plus précisément, c'est IsPathRooted qui renvoie True



    Bon, fallait de \ dans le second chemin. Étrange, je suis sûr d'avoir déjà utilisé des chemins comme ça sans avoir de problème. Ou alors, j'ai rêvé.

  2. #2
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 119
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 119
    Points : 41 254
    Points
    41 254
    Billets dans le blog
    63
    Par défaut
    Bonjour,

    je me méfierais d'une variable nommée path et remplacerais par GetHomePath, avec FMX j'insiste même sur l'unité System.IOUtils afin que TPath soit bien celui qui gère le chemins de répertoire et non le TPath qui contient des données de dessin

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Pth :=System.IOUtils.TPath.Combine(System.IOUtils.TPath.GetHomePath, 'Microsoft\Windows\Start Menu\Programs');

  3. #3
    Membre expert

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2007
    Messages
    3 487
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2007
    Messages : 3 487
    Points : 3 120
    Points
    3 120
    Par défaut
    Justement, je ne peux me baser sur GetHomePath parce que le programme doit être exécuté par un admin qui n'est pas l'utilisateur final.
    Path est bien une variable passée à ma fonction dans ce cas là.
    Sinon, tu as tout à fait raison.

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

Discussions similaires

  1. l'heure systeme se comporte bizarrement
    Par asoka13 dans le forum Windows XP
    Réponses: 3
    Dernier message: 19/07/2008, 11h09
  2. xsl:test .... avec comportement bizarre
    Par Blue LC dans le forum XMLRAD
    Réponses: 2
    Dernier message: 10/06/2005, 13h56
  3. [ACESS][MEMO][ISNULL]Comportement bizarre
    Par seb.49 dans le forum ASP
    Réponses: 2
    Dernier message: 09/06/2004, 10h44
  4. [HttpClient] comportement bizarre, saute des catch()...
    Par iubito dans le forum Développement Web en Java
    Réponses: 4
    Dernier message: 04/02/2004, 15h25
  5. [Sybase] Comportement bizarre d'une table
    Par sdozias dans le forum Sybase
    Réponses: 4
    Dernier message: 03/02/2004, 10h39

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