Vb

deck10 -  
 Utilisateur anonyme -
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

  1. Utilisateur anonyme
     
    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+ ?
    0
  2. deck10
     
    oui, c'est que je lis cette forme
    Merci de ta réponse, encore
    =)

    @+deck10
    0
  3. deck10
     
    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
    0
  4. deck10
     
    non, c'est bon j'ai résolu mon pb avec ta solution.Je l'ai un peu modifié et puis ca marche.

    @+deck10
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. Utilisateur anonyme
     
    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
    0