1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    décembre 2003
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : décembre 2003
    Messages : 13
    Points : 14
    Points
    14

    Par défaut VBS problème avec fichier INI

    Bonjour,

    Je suis débutant en VBS et je suis confronté à un problème que je ne saurai résoudre seul.

    Je veux obtenir le nom d'une section à partir de l'une de ses clés, exemple de mon fichier ini :

    [Area.104]
    Title=Central North America
    Local=Scenery\NAMC
    Layer=104
    Active=TRUE
    Required=FALSE

    [Area.105]
    Title=Eastern North America
    Local=Scenery\NAME
    Layer=105
    Active=TRUE
    Required=FALSE

    [Area.106]
    Title=Western North America
    Local=Scenery\NAMW
    Layer=106
    Active=TRUE
    Required=FALSE

    Comment je fait pour obtenir [Area.105] si je ne connait que la clés Titre (Title=Eastern North America) ??? A savoir que chaque Titre à une valeur unique, donc cela ne devrait pas être trop compliqué de retrouver le nom de la section qui lui ai propre.

    Merci mille fois pour votre aide

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

    Informations forums :
    Inscription : février 2006
    Messages : 1 117
    Points : 2 982
    Points
    2 982

    Par défaut

    bonjour,
    la méthode la plus puissante serait d'utiliser les expressions régulières
    mais ce n'est pas toujours très intuitif pour beaucoup de scripteurs...
    sinon, il y a ce genre de chose (ton exemple a été enregistré dans un fichier "Area.ini")
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Dim TitleName
    TitleName = Array("Central North America","Eastern North America","Western North America")
    IniFile=CreateObject("Scripting.FileSystemObject").OpenTextFile("Area.ini",1).ReadAll
    PosEnd=InStrRev(IniFile,"]",InStrRev(IniFile,TitleName(0)))
    PosStart=InStrRev(IniFile,"[",PosEnd)+1
    Wscript.Echo Mid(IniFile,PosStart,PosEnd-PosStart)
    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

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    décembre 2003
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : décembre 2003
    Messages : 13
    Points : 14
    Points
    14

    Par défaut

    Bonjour omen999,

    Merci beaucoup pour le code, ça fonctionne parfaitement, néanmoins, serai t-il possible de lire le fichier avec ADODB au lieux de Scripting.FileSystemObject avec le Charset sur "_autodetect_all", en effet le fichier Area.ini est parfois encodé en UTF-16LE ce qui provoque une erreur du script.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Dim TitleName
    TitleName = Array("Washington_DC")
    IniFile=CreateObject("ADODB.Stream").OpenTextFile("Aera.ini",1).ReadAll
     
    IniFile.CharSet = "_autodetect_all"
     
    PosEnd=InStrRev(IniFile,"]",InStrRev(IniFile,TitleName(0)))
    PosStart=InStrRev(IniFile,"[",PosEnd)+1
    Wscript.Echo Mid(IniFile,PosStart,PosEnd-PosStart)
    Mon code ci-dessus me retourne une erreur.

    Merci pour ton aide.

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

    Informations forums :
    Inscription : février 2006
    Messages : 1 117
    Points : 2 982
    Points
    2 982

    Par défaut

    ceci devrait "digérer" tous les formats
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Dim TitleName
    TitleName = Array("Central North America","Eastern North America","Western North America")
    Set IniStream=CreateObject("ADODB.Stream")
    IniStream.Open 
    Inistream.Charset="_autodetect_all"
    IniStream.LoadFromFile "Area.ini"
    IniFile=IniStream.ReadText
    PosEnd=InStrRev(IniFile,"]",InStrRev(IniFile,TitleName(0)))
    PosStart=InStrRev(IniFile,"[",PosEnd)+1
    Wscript.Echo Mid(IniFile,PosStart,PosEnd-PosStart)
    IniStream.Close
    ps : la solution de stackoverflow est vraiment trop verbeuse...
    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

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    décembre 2003
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : décembre 2003
    Messages : 13
    Points : 14
    Points
    14

    Par défaut

    Merci merci merci, c'est parfait omen999.

    Cela faisait deux jours que j'étais bloqué, c'est la libération.


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

Discussions similaires

  1. Problème avec php.ini
    Par irnbru dans le forum Outils
    Réponses: 1
    Dernier message: 17/07/2006, 00h51
  2. Problème avec fichier Excel génère erreur
    Par Yanmeunier dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 17/02/2006, 12h53
  3. Problème avec un .ini
    Par ni0urk dans le forum MFC
    Réponses: 3
    Dernier message: 22/11/2005, 18h59
  4. [Delphi 3] Problème avec fichier ressource .RES
    Par delphim dans le forum EDI
    Réponses: 2
    Dernier message: 28/06/2005, 19h11
  5. Problème avec fichier texte
    Par jpdelx dans le forum ASP
    Réponses: 7
    Dernier message: 13/11/2003, 14h17

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