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

VB 6 et antérieur Discussion :

lire une chaine qui est entre 2 symboles '


Sujet :

VB 6 et antérieur

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    685
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 685
    Par défaut lire une chaine qui est entre 2 symboles '
    Bonjour,
    je dois lire un txt qui ressemble à ça :

    CODE1,'montexte'
    CODE2,'une longueur de caractères inconnue et donc variable'
    CODE3,'12000'
    ...

    J'arrive à lire chaque ligne sans pb. Mais je voudrais à chaque fois lire ce qui est après la virgule et sans retenir le guillement simple '

    j'ai essayé avec un :
    CODE1 = Mid(LigneLue, 7, 13)

    Mais mon pb est que la chaine de caractères entre les quotes n'est jamais de la même longueur. Donc cela ne marche pas.


    Bref, j'aurais besoin de lire la chaine de caractère (quelque soit sa longueur) qui se trouve aprés la virgule et sans les quotes.

    Qui connait la solution ?

    Merci
    Thibault

  2. #2
    Expert éminent


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Par défaut
    bonsoir

    tu peu utiliser la fonction InStr , pour trouver la position de ta virgule


    où bien la fonction split...

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    685
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 685
    Par défaut
    Merci Bbil pour ta réponse rapide.

    Entre temps, j'ai réussis à obtenir ce que je voulais en contournant mon pb.
    C'est certainement pas trés propre mais ça marche :
    je donne ma bidouille pour ceux qui auront le même besoin.

    En 1er, je vais lire mon txt et je vire les quotes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Dim TextFichier As String
    Dim NomFichier As String
    NomFichier = "c:\monfichier.txt"
     
    NumFichier = FreeFile
    Open NomFichier For Binary Access Read Write As #NumFichier
    TextFichier = Space$(LOF(NumFichier))
     
    Get #NumFichier, 1, TextFichier
     
    TextFichier = Replace(TextFichier, Chr$(39), "") 'chr 39 est la quote
     
    Put #NumFichier, 1, TextFichier
    Close #NumFichier
    puis ensuite un peu plus loin, je le relis avec un mid sur 100 caractères (le maxi sera une ligne contenant 80 caractères) or j'ai découvert que si on met +, cela s'arrête à la fin du texte sans ajouter des espaces ou autres choses indésirables :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    If Mid(LigneLue, 1, 14) = "CODE1" Then
            NOMJEUNEFILLE = Mid(LigneLue, 16, 100)
                    TxtNomJeuneFille.Text = NOMJEUNEFILLE
                    Print #EXPORT, NOMJEUNEFILLE;
            End If
    Je vais essayer de trouver un exemple avec le intStr pour comprendre comment cela s'utilise.

    Merci

  4. #4
    Expert éminent


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008

  5. #5
    Inactif  

    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    4 555
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 4 555
    Par défaut
    Bonsoir,

    regarde ce que fait ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    texte = "CODE1,'blablabla'"
      If InStr(texte, "'") And InStr(texte, ",") Then
        texte = Mid(texte, InStr(texte, "'") + 1)
        If InStr(texte, "'") Then
          texte = Left(texte, InStr(texte, "'") - 1)
        End If
      End If
      MsgBox texte
    Edit :

    Une plus grande prudence, toutefois, devrait te conduire (juste pour le cas où) à préférer ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Dim p1 As Integer, p2 As Integer, texte As String
      texte = "CODE1,'blablabla'"
      p1 = InStr(texte, ",")
      p2 = InStr(texte, "'")
      If p1 And p2 And p2 > p1 Then
        texte = Mid(texte, p2 + 1)
        If InStr(texte, "'") Then
          texte = Left(texte, InStr(texte, "'") - 1)
        End If
      Else
        MsgBox "pas au format attendu !"
      End If
      MsgBox texte

  6. #6
    Expert éminent


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Par défaut
    tant qu'on est dans la grande prudence...

    pour le 2° ' tu devrai utiliser InStrRev ...


    Pour le cas où ta chaine intègrerai une ' .. ( à voir si dans ce cas comment est stockée ta chaine et quel est le caractére d'échappement utilisé...)

  7. #7
    Inactif  

    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    4 555
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 4 555
    Par défaut
    Bonsoir Bbil,

    Pas si d'accord que celà !

    Imagine donc ce cas de figure :

    texte = "CODE1,'blablabla' dit Jeannot l'effronté"

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

Discussions similaires

  1. Lire une chaine entrée au clavier
    Par sushis dans le forum x86 16-bits
    Réponses: 4
    Dernier message: 11/04/2011, 11h12
  2. Réponses: 1
    Dernier message: 05/11/2009, 15h19
  3. Recherche a récupérer ce qui est entre une date saisie et 9999-12-31
    Par Lolie11 dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 14/06/2007, 14h58
  4. Extraîre une chaîne qui est entre deux chaînes.
    Par Horrigan dans le forum Langage
    Réponses: 5
    Dernier message: 01/09/2006, 19h01
  5. Réponses: 9
    Dernier message: 31/05/2005, 14h34

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