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 :

Remplacement de \


Sujet :

C#

  1. #1
    Membre expert

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

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2007
    Messages : 3 410
    Points : 3 038
    Points
    3 038
    Par défaut Remplacement de \
    Bonjour tout le monde,

    Après une assez longue pause, je remets le nez dans C# et je me retrouve un peu paumé. Mon premier problème tout bète concerne le remplacement d'une chaîne dans une autre. Basiquement ça donne ça:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
        NetworkPath = "\\serveur01\dossier01"
        string szPath = NetworkPath.Replace(@"\", "\\");
    Résultat : La chaîne n'est pas modifiée.

    Elle est où mon erreur docteur ?

    Papy !

  2. #2
    Membre chevronné Avatar de Er3van
    Homme Profil pro
    Architecte Logiciel
    Inscrit en
    Avril 2008
    Messages
    1 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Architecte Logiciel
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2008
    Messages : 1 430
    Points : 2 227
    Points
    2 227
    Par défaut
    Code c# : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    NetworkPath = @"\\serveur01\dossier01"
    string szPath = NetworkPath.Replace(@"\", @"\\");

    @ te permet de gérer l'échappement. A toi de bien voir ce que tu veux en faire.
    Si c'est "normal" d'avoir des "\\" ou pas.
    La tu vas remplacer tous les \ par des \\.

    Dans ton exemple, ça revenait à remplacer "\" par "\"...
    One minute was enough, Tyler said, a person had to work hard for it, but a minute of perfection was worth the effort. A moment was the most you could ever expect from perfection.

    -- Chuck Palahniuk, Fight Club, Chapter 3 --

  3. #3
    Membre expert

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

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2007
    Messages : 3 410
    Points : 3 038
    Points
    3 038
    Par défaut
    Tout d'abord, merci pour la rapidité de la réponse. C'est agréable de voir que l'entraide est toujours au programme par ici :-)

    Alors, en fait, mon appli stocke dans la base de registre un chemin vers un dossier. Ce chemin peut être soit un chemin unc, soit directement une lettre de lecteur connecté.

    Dans le cas d'un chemin unc, il n'y a jamais de problème.
    Mais si l'utilisateur a renseigné un lecteur connecté, régulièrement, l'appli ne trouve pas le chemin.

    J'ai donc cherché un bout de code pour retrouver le chemin unc dans tous les cas. Mais la valeur stockée en base est de la forme "\\serveur1\dossier1" ou "Z:\dossier1".

    J'essaye de faire fonctionenr "à tous les coups" le code trouvé et que voici :

    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
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
     
    using System.IO;
    using System.Runtime.InteropServices;
    using System.Text;
     
    namespace WindowsFormsApplication1
    {
    	class Network
    	{
    		[DllImport("shlwapi.dll", SetLastError = true, CharSet = CharSet.Auto)]
    		public static extern bool PathIsNetworkPath([MarshalAs(UnmanagedType.LPTStr)]string pszPath);
    		[DllImport("mpr.dll", SetLastError = true, CharSet = CharSet.Auto, EntryPoint = "WNetGetConnectionW")]
    		public static extern int WNetGetConnection([MarshalAs(UnmanagedType.LPWStr)]string lpLocalName, StringBuilder lpRemoteName, ref int lpnLength);
     
    		static public string GetUNCPath(string NetworkPath)
    		{
    			string szRoot = NetworkPath.Substring(0, 2);
    			string szPath = NetworkPath.Replace(@"\", @"\\");
    			if (PathIsNetworkPath(szPath))
    			{
    				StringBuilder szbUNC = new StringBuilder(260);
    				int iLength = 260;
    				if (WNetGetConnection(szRoot, szbUNC, ref iLength) == 0)
    				{
                                            szPath = Path.Combine(szbUNC.ToString(), Path.GetFileName(szPath));
                                    }
    			}
    			return szPath;
    		}
    	}
    }
    D'où mes essais de modifs pour gérer ces \

  4. #4
    Membre expert

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

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2007
    Messages : 3 410
    Points : 3 038
    Points
    3 038
    Par défaut
    J'ai trouvé (enfin, je crois :-) )

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    			string szPath;
    			if(szRoot.Equals(@"\\")){
    				szPath = NetworkPath;
    			}else{
    				szPath = NetworkPath.Replace(@"\", @"\\");
    			}
    Les essais semblent concluants.

    Merci encore et bonne journée

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

Discussions similaires

  1. Réponses: 9
    Dernier message: 23/12/2013, 16h40
  2. comment remplacer une partie de texte dans un champs
    Par patlapi dans le forum Paradox
    Réponses: 4
    Dernier message: 20/11/2003, 14h38
  3. remplacer un caractere dans un fichier
    Par ickis dans le forum C
    Réponses: 11
    Dernier message: 13/10/2003, 09h29
  4. Comment on remplace un check ?
    Par Nout dans le forum Requêtes
    Réponses: 4
    Dernier message: 29/07/2003, 11h20
  5. [SQL] Remplacer une table
    Par rstephane dans le forum Langage SQL
    Réponses: 5
    Dernier message: 06/05/2003, 17h10

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