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

Vos Contributions VBScript Discussion :

Lire la valeur d'une clé d'un fichier "INI"


Sujet :

Vos Contributions VBScript

  1. #1
    Rédacteur
    Avatar de omen999
    Profil pro
    Inscrit en
    février 2006
    Messages
    1 229
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : février 2006
    Messages : 1 229
    Points : 3 327
    Points
    3 327
    Par défaut Lire la valeur d'une clé d'un fichier "INI"
    bonjour,
    la lecture d'un message récent et un besoin personnel à résoudre m'ont amené à me pencher sur la lecture et l'écriture
    des clés de fichiers INI toujours présents sur nos machines notamment en raison de la portabilité qu'ils procurent
    je croyais - naïvement - trouver sur le net un exemple tout fait de
    lecture/écriture de ces clés avec les expressions régulières dans une syntaxe compatible vbs : nada

    dans un premier temps j'ai écris la fonction ReadIni dont la logique de lecture tient en 2 lignes

    la fonction respecte les normes de format windows :
    - indifférence à la casse
    - nom de clé unique dans une même section (la valeur des clés suivantes de même nom sera ignorée)

    j'y ai juste ajouté le support des commentaires de fin de ligne

    le fichier test.ini à placer dans le répertoire "Mes documents"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    [UserHome]
    Name=
    Handy=21/10/2016 ;ceci est la clé recherchée
    WWW=
    [UserBusiness]
    Name=
    Handy=02/02/2015 ;pas celle-ci
    WWW=
    le code :
    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
    Set fso = CreateObject("Scripting.FileSystemObject")
    Set wshell = CreateObject("WScript.Shell")
     
    Set tfg = fso.OpenTextFile(wshell.SpecialFolders("MyDocuments") & "\test.ini",1)
    Msgbox ReadIni(tfg,"UserHome","Handy")
     
    Function ReadIni(iniFile,section,key)
    ' renvoie la valeur de la clé <key> de la section <section> de l'objet fichier <iniFile> ouvert en lecture
    Dim iniText
    ' Initialisation des objets regexp
    ' peut être déplacé dans le code principal en cas d'appels successifs
    	Set reg = New RegExp
    	Set regSub = New RegExp
    	reg.IgnoreCase = True
    	regSub.IgnoreCase = True
    ' lecture du fichier ini et fermeture
    	iniText = iniFile.ReadAll
    	iniFile.Close
    ' lecture de la clé spécifique de la section
    	reg.Pattern = "\[" & section & "\]([^\[]+)":regSub.Pattern = "\b" & key & " *= *([^;\f\n\r\t\v]+)"
                On Error Resume Next
    	ReadIni = regSub.Execute(reg.Execute(iniText).Item(0).SubMatches(0)).Item(0).SubMatches(0)
                If Err.Number = 5 then ReadIni = False
    End Function
    avant de placer cet exemple dans la toutes les remarques sont bienvenues
    l'écriture des clés au prochain épisode
    edit : ajout gestion section/clé absentes ou clé vide renvoie la valeur booléenne Faux
    edit2 : suppression du bug des espaces dans les valeurs de clé (voir ci-dessous)
    nomen omen, nemo non omen - Consultez la FAQ VBScript et les cours et tutoriels VBScript
    le plus terrible lorsqu'une voiture renverse un piéton, c'est que ce sont les freins qui hurlent. (ramón)
    pas de questions techniques par mp

  2. #2
    Modérateur
    Avatar de l_autodidacte
    Homme Profil pro
    Retraité : Directeur de lycée/Professeur de sciences physiques
    Inscrit en
    juillet 2009
    Messages
    2 296
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Retraité : Directeur de lycée/Professeur de sciences physiques
    Secteur : Enseignement

    Informations forums :
    Inscription : juillet 2009
    Messages : 2 296
    Points : 5 427
    Points
    5 427
    Par défaut
    Bien vu et bien concis.(à la différence de mes 2 contributions Modification et Lecture dans un fichier ini).
    Toutefois, il y a un petit souci : Lorsqu'une valeur contient un ou des espaces, seul le premier terme(ou mot) est retourné.
    Ne pas oublier le tag si satisfait.
    Voter pour toute réponse satisfaisante avec pour encourager les intervenants.
    Balises CODE indispensables. Regardez ICI
    Toujours utiliser la clause Option Explicit(VBx, VBS ou VBA) et Ne jamais typer variables et/ou fonctions en VBS.
    Vous pouvez consulter mes contributions
    Ne pas oublier de consulter les différentes FAQs et les Cours/Tutoriels VB6/VBScript
    Ne pas oublier L'Aide VBScript et MSDN VB6 Fr

  3. #3
    Rédacteur
    Avatar de omen999
    Profil pro
    Inscrit en
    février 2006
    Messages
    1 229
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : février 2006
    Messages : 1 229
    Points : 3 327
    Points
    3 327
    Par défaut
    effectivement, merci l_autodidacte pour ce retour
    ma fonction WriteIni qui était prête présente le même souci
    je vois ça rapidement
    nomen omen, nemo non omen - Consultez la FAQ VBScript et les cours et tutoriels VBScript
    le plus terrible lorsqu'une voiture renverse un piéton, c'est que ce sont les freins qui hurlent. (ramón)
    pas de questions techniques par mp

  4. #4
    Rédacteur
    Avatar de omen999
    Profil pro
    Inscrit en
    février 2006
    Messages
    1 229
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : février 2006
    Messages : 1 229
    Points : 3 327
    Points
    3 327
    Par défaut
    voilà bug supprimé
    un "side-effect" mineur, la valeur de clé renvoyée contiendra
    les espaces éventuels de fin de chaine
    nomen omen, nemo non omen - Consultez la FAQ VBScript et les cours et tutoriels VBScript
    le plus terrible lorsqu'une voiture renverse un piéton, c'est que ce sont les freins qui hurlent. (ramón)
    pas de questions techniques par mp

Discussions similaires

  1. Lire la valeur d'une propriété CSS par le Javascript
    Par boutmos dans le forum Général JavaScript
    Réponses: 10
    Dernier message: 11/07/2008, 17h56
  2. lire la valeur d'une case(excel) sous vb2005
    Par CLion dans le forum VB.NET
    Réponses: 5
    Dernier message: 09/01/2008, 19h55
  3. Lire les valeur d'une requete (methode utiliser POSTE)
    Par Alghero dans le forum Servlets/JSP
    Réponses: 1
    Dernier message: 25/07/2007, 16h09
  4. lire la valeur d'une adresse mémoire
    Par ilimo dans le forum Windows
    Réponses: 17
    Dernier message: 11/04/2006, 16h21

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