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

Windows Discussion :

Vb6 : substitution d'une variable par sa valeur dans une chaîne


Sujet :

Windows

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 3
    Points : 2
    Points
    2
    Par défaut Vb6 : substitution d'une variable par sa valeur dans une chaîne
    Bonjour !

    Tout d'abord pour ce programme, je suis obligé de passer par VB6 (pas eu le choix du langage... )

    Après lecture d'un fichier INI, je me retrouve avec des chemins DOS utilisant des variables d'environnement, du style :

    sMaVariable = "c:\test\%USERNAME%\voila"

    ou bien :

    sMaVariable = "%APPDATA%\Adobe\%VERNUMBER%\pouet"

    Je vais par la suite être ammené à bosser sur ces répertoires (folderexists, filecopy etc.) dans mon programme VB6;

    Ca va, jusque là ? Alors voilà le problème !

    FolderExists(sMaVariable), ça foire car elle contient des %VARD'ENV% et que les fonctions VB6 ne les traduisent malheureusement pas !

    Je me suis dit "pas de problème, suffit de remplacer ces %VARS% par leur valeur dos, récupérées avec un GetEnvironmentVariable", mais gérer tous les cas de figure semble complexe...

    Des idées, des suggestions ?

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    336
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 336
    Points : 341
    Points
    341
    Par défaut
    Salut,

    cherche du côté de ExpandEnvironmentVariables. Ca permet précisément de remplacer le %nomvariable% par <valeur de la variable>.

    Karl3i.

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 3
    Points : 2
    Points
    2
    Par défaut
    Citation Envoyé par karl3i
    Salut,

    cherche du côté de ExpandEnvironmentVariables. Ca permet précisément de remplacer le %nomvariable% par <valeur de la variable>.

    Karl3i.
    C'est une méthode .NET, elle n'existe hélas pas en VB6

    Pour l'instant utilise une fonction un peu monstrueuse :
    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
    32
    33
    34
    35
    36
    37
    '-----------------------------------------------------------------------------------------------
    ' Conversion d'un chemin en transformant les variables d'environnement en valeurs absolues
    '-----------------------------------------------------------------------------------------------
    Private Function ConvertPathName(ByVal sNatPath As String) As String
        Dim myRegExp    As New RegExp
        Dim myMatches   As MatchCollection
        Dim myMatch     As Match
        Dim l           As Long
        Dim lpBuffer    As String
        
        ' Par défaut
        ConvertPathName = sNatPath
        
        'On utilise les expressions régulières pour isoler une éventuelle variable DOS
        myRegExp.IgnoreCase = True
        myRegExp.Global = True
        
        ' On cherche une variable d'environnement caractérisée par le délimiteur "%"
        myRegExp.Pattern = "%([A-Z]*)%"
        Set myMatches = myRegExp.Execute(sNatPath)
                
        ' Si le chemin contient des variables d'environnement
        If myMatches.Count > 0 Then
        
            For Each myMatch In myMatches
                lpBuffer = String(512, 0)
                l = GetEnvironmentVariable(Mid(myMatch.Value, 2, Len(myMatch.Value) - 2), lpBuffer, 512)
                If l <> 0 Then
                    lpBuffer = Left(lpBuffer, l)
                    myRegExp.Pattern = myMatch.Value
                    sNatPath = myRegExp.Replace(sNatPath, lpBuffer)
                End If
            Next
            
            ConvertPathName = sNatPath
        End If
    End Function

Discussions similaires

  1. Récupération de la valeur d une variable elle même contenue dans une variable
    Par guiplongeur dans le forum Shell et commandes GNU
    Réponses: 3
    Dernier message: 16/03/2015, 16h23
  2. remplacer une variable par sa valeur dans une chaine
    Par regis1_1 dans le forum Langage
    Réponses: 5
    Dernier message: 12/05/2013, 12h07
  3. Réponses: 3
    Dernier message: 03/01/2012, 11h16
  4. Réponses: 3
    Dernier message: 13/12/2009, 17h04
  5. Réponses: 2
    Dernier message: 02/04/2008, 19h55

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