Vb

Bonjour,
voici ma question:
dans un programme en vb, je traite un fichier séquentiel écrit en xml.
dans ce fichier, je lis par exemple, qui va etre mise dans une string:
<N°Enfant> 2 </N°Enfant>

Je voudrai savoir comment extraire le 2 de la string et la mettre dans un integer?

Merci de me répondre
@+deck10

5 réponses

  • Votes
  • Date
  • Date décroissante
  1. re bonjour
    si sûr de la "forme", sinon à adapter

    result=val(mid(zone,InStr(zone, ">")+2,Instr(zone,"<")-2))

    parce que là on suppose zone de la
    forme ".....> nombre <....." espaces inclus

    1er Instr recherche le 1er caractère = >
    2ème <
    mid(zone,adresse 1er caractère,adresse dernier carcatère)
    extrait de zone à partir de, jusqu'à
    resul=val(text) tranforme en integer,long...
    dépend de la définition de result dim integer,long ..

    a+ ?
    1. oui, c'est que je lis cette forme
      Merci de ta réponse, encore
      =)

      @+deck10
      1. c'est encore moi,
        mais je crois ( je l'ai essayé),le 2e instr ne correspond pas à la longueur jusquà </enfant> mais au début càd <enfant>
        De plus, le 1er instr enleve bien <enfant>. Avec la fonction val, il transforme jusqu'a ce qu'il un caractère qui n'est pas un chiffre.Donc pour moi le 2e instr me sert à rien.

        Mais maitenant, je me trouve dans cette situation:
        zone= exemple</enfant>

        et la je voudrai enlever la partie </enfant>
        et donc me retrouver avec zone=exemple

        J'espere que vous avez compris (surtout bul, qui m'aide deuis le début)
        Merci de me repondre

        @+deck10
        1. non, c'est bon j'ai résolu mon pb avec ta solution.Je l'ai un peu modifié et puis ca marche.

          @+deck10
          1. ouais : jai dégainé un peu vite
            bravo d'avoir trouvé
            il fallait faire result=val(mid(zone,InStr(zone, ">")+2,Instr(zone,"<\")-2))
            ou on pouvait décomposer :
            dim deb,fin,ret as integer
            deb=instr(zone,">")+2
            fin=instr(deb,zone,"<")-2
            ret=eval(mid(zone,deb,fin))
            cordialement