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

VBScript Discussion :

Récupérer le chiffre max d'une variable dans un fichier


Sujet :

VBScript

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    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
    Par défaut Récupérer le chiffre max d'une variable dans un fichier
    Bonjour,

    Je fais face à un souci, j'ai un fichier scenery.cfg qui ressemble à ceci :

    [Area.001]
    Title=Default Terrain
    Texture_ID=1
    Local=Scenery\World
    Layer=1
    Active=TRUE
    Required=TRUE

    [Area.002]
    Title=Default Scenery
    Local=Scenery\BASE
    Layer=2
    Active=TRUE
    Required=TRUE

    [Area.003]
    Title=0000 Base
    Local=Scenery\0000
    Layer=3
    Active=TRUE
    Required=FALSE

    ...
    ...
    Etc

    Ce que je souhaite c'est récupérer en VBS le chiffre MAX de la dernière section [Area.xxx] du fichier scenery.cfg, je n'y arrive pas tout seul, même avec des centaines de recherches sur google je suis bloqué.
    Par exemple si il y a [Area.100] [Area.88] [Area.002] [Area.121] [Area.052] le chiffre le plus élevé de [Area.xxx] dans mon exemple est 121, c'est donc ce chiffe dont j'ai besoin.

    Je dois faire la même chose avec Layer=xxx

    Y a t-il une bonne âme pour me venir aide ? Je vous remercies par avance.

    Erik

  2. #2
    Expert éminent
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Par défaut


    Bonjour, bonjour !

    C'est pourtant de niveau débutant et il ne s'agit pas d'une variable !

    Poster déjà le code entrepris et préciser la difficulté rencontrée, quel point technique précis …


    ______________________________________________________________________________________________________
    Je suis Charlie, Bardo, Sousse

  3. #3
    Membre averti
    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
    Par défaut
    Bonjour,

    Je vous confirme que je suis débutant de chez débutant, ceci explique pourquoi je poste un message sur ce forum.

    A l'heure actuelle j'ai seulement un code (trouvé sur google) qui me permet de compter le nombre de fois que Area.xxx apparaît dans le fichier scenery.cfg

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Const ForReading = 1
    Set fso = CreateObject( "Scripting.FileSystemObject" )
    Set textFile = fso.OpenTextFile( "Scenery.cfg", ForReading )
    contents = textFile.ReadAll
    textFile.Close
    Set rgxp = New Regexp
    rgxp.Pattern = "Area."
    rgxp.IgnoreCase = True
    rgxp.Global = True
    Set matches = rgxp.Execute( contents )
    Wscript.Echo "Number of Area : " & matches.Count
    Malheureusement, cela ne correspond à ce que je cherche, en effet, Area.xxx peux avoir différente valeur numérique qui ne se suivent pas, Area.120 Area.142 Area.56, ce script me retourne 3 au lieu de 142.

    Merci pour vos lanternes,

    Erik

  4. #4
    Expert éminent
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Par défaut




    Joindre le fichier texte source pourrait aider aussi …

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

    Informations forums :
    Inscription : Février 2006
    Messages : 1 302
    Par défaut
    bonjour,

    mmm ça sent le cheating bot

    une solution précuite - mais on peut résoudre ton problème avec des patterns différents

    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
    Const ForReading = 1
    Set fso = CreateObject( "Scripting.FileSystemObject" )
    Set textFile = fso.OpenTextFile( "Scenery.cfg", ForReading )
    contents = textFile.ReadAll
    textFile.Close
    Set rgxp = New Regexp
    rgxp.Pattern = "Area.(\d+)"
    rgxp.IgnoreCase = True
    rgxp.Global = True
    Set matches = rgxp.Execute(contents)
    iBufNum=0
    For Each match in matches   ' Itère la collection Matches.
    If match.SubMatches(0) > iBufNum Then iBufNum = match.SubMatches(0)
    Next
    wscript.echo iBufNum
    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

  6. #6
    Membre averti
    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
    Par défaut
    Re-bonjour,

    la solution de omen999 fonctionne parfaitement merci beaucoup ! Ce code (plus fiable que mon code en batch actuel) me sera nécessaire dans le cadre de l'ajout d'une scène dans FSX via un programme d'installation automatique.

    Je marque le sujet comme étant résolu,

    Merci à tous,

    Erik

  7. #7
    Membre averti
    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
    Par défaut
    Re-re-bonjour,

    Je rencontre encore une petite difficulté, le code fonctionne a merveille pour Aera.xxx, cependant, si je remplace " Aera.xx " par " Layer= " tel que dans le code suivant :

    rgxp.Pattern = "Layer=(\d+)"

    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
    Const ForReading = 1
    Set fso = CreateObject( "Scripting.FileSystemObject" )
    Set textFile = fso.OpenTextFile( "Scenery.cfg", ForReading )
    contents = textFile.ReadAll
    textFile.Close
    Set rgxp = New Regexp
    rgxp.Pattern = "Layer=(\d+)"
    rgxp.IgnoreCase = True
    rgxp.Global = True
    Set matches = rgxp.Execute(contents)
    iBufNum=0
    For Each match in matches   ' Itère la collection Matches.
    If match.SubMatches(0) > iBufNum Then iBufNum = match.SubMatches(0)
    Next
    wscript.echo iBufNum
    Le script me retourne 99 et jamais plus, alors que la valeur maximum de Layer est 120, je suppose qu'il doit y avoir un changement a faire au niveau du Regex pour l'adapter à Layer... ?

    Pour rappel voici le contenu du fichier Scenery.cfg :

    [Area.001]
    Title=Default Terrain
    Texture_ID=1
    Local=Scenery\World
    Layer=1
    Active=TRUE
    Required=TRUE

    [Area.002]
    Title=Default Scenery
    Local=Scenery\BASE
    Layer=2
    Active=TRUE
    Required=TRUE

    [Area.003]
    Title=0000 Base
    Local=Scenery\0000
    Layer=3
    Active=TRUE
    Required=FALSE
    ...
    etc


    Merci pour votre aide, car je patauge.

    Erik

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

Discussions similaires

  1. Récupérer une variable dans un fichier par rapport à l'emplacement d'une autre
    Par FlorianBreizh dans le forum Shell et commandes GNU
    Réponses: 9
    Dernier message: 10/12/2012, 11h05
  2. Réponses: 2
    Dernier message: 26/01/2012, 16h24
  3. Récupérer une variable dans un fichier php
    Par totof49 dans le forum ActionScript 1 & ActionScript 2
    Réponses: 0
    Dernier message: 27/03/2009, 14h15
  4. Réponses: 9
    Dernier message: 21/05/2007, 00h33
  5. Réponses: 13
    Dernier message: 14/06/2003, 22h15

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