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.NET Discussion :

Lecture fichier texte à 3 champs séparés par des "|"


Sujet :

VB.NET

  1. #1
    Membre à l'essai
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juillet 2013
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2013
    Messages : 19
    Points : 17
    Points
    17
    Par défaut Lecture fichier texte à 3 champs séparés par des "|"
    Bonjour à tous,

    Débutant VB.net, j'aurais besoin de vous pour un problème "simple".

    J'ai besoin de lire dans un fichier texte 3 valeurs bien spécifiques séparées par des "|".
    Pour le moment j'arrive à récupérer les 2 premiers champs, mais mon entreprise me demande de récupérer le champ suivant et j'avoue être perdu:

    Fichier texte:

    1|MXX-XXXX|"^[M][0-9]{2}-[0-9]{4}$"
    2|PREM999XXX 99|"^PREM[0-9]{3}[A-Z0-9 ]{3} [0-9]{2}$"
    3|AAAXXXXXXXXXX|"^[A-Z]{3}[0-9]{10}$"

    Code récuperant les 2 premiers champs:

    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
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
                Dim famille_lecture_1 As String
                Dim fso2 As Object
                Dim famille_lecture_2 As Object
     
    fso2 = CreateObject("Scripting.FileSystemObject")
                famille_lecture_2 = fso2.opentextfile(famille_lecture_1, 1, True)
                'Fonction qui cherche la famille
     
                aTemp = famille_lecture_2.readline().Split(New Char() {"|"c}, StringSplitOptions.None)
                nbRecord = aTemp(0)
                ReDim separatedFamille(nbRecord, 2)
     
                'Parcour de notre fichier ligne par ligne 
     
                For Me.i = 0 To nbRecord - 1
                    aTemp = famille_lecture_2.readline().Split(New Char() {"|"c}, StringSplitOptions.None)
                    For Me.j = 0 To 1
                        separatedFamille(i, j) = aTemp(j)
                    Next
                    Me.cbSelectFamille.Items.Add(separatedFamille(i, 1))
                Next
     
                famille_lecture_2.close()
                famille_lecture_2 = Nothing
                fso2 = Nothing

    Voilà, pourriez-vous m'aider à récupérer ce 3ème champ afin que je puisse l'avoir dans "separatedFamille(A, B, et C)

    Merci d'avance, le débutant
    Tony

  2. #2
    Membre expérimenté Avatar de Uranne-jimmy
    Homme Profil pro
    Bioinformatique
    Inscrit en
    Décembre 2012
    Messages
    778
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Bioinformatique
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Décembre 2012
    Messages : 778
    Points : 1 461
    Points
    1 461
    Par défaut
    Bonjour,
    J'ai regardé un peu vite ton code, mais sans l'avoir vu j'aurais pas agit comme ça.
    A partir d'un split, tu obtiens un tableau, chaque indice en partant de 0 te donne les différentes chaines recherché.
    Donc dans ta boucle qui traite ligne par ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    uneVariableString() = maligne.split("|")
    MaTroisiemeString = uneVariableString(2)
    Non ?

    Je trouve ton code vachement compliqué pour la demande en fait, il est donc possible que je sois à côté de la plaque.
    Expert en recherche google caféinomane

  3. #3
    Expert éminent sénior Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 154
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 154
    Points : 25 072
    Points
    25 072
    Par défaut
    ca sent le code venu de vb6/vbs
    résultat 20 lignes de code au lieu de 5 ...
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  4. #4
    Modérateur

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1 722
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 722
    Points : 5 100
    Points
    5 100
    Par défaut
    Bonjour,

    L'énoncé de votre problème n'est-il pas incomplet ?
    A mon avis la première ligne de votre fichier réellement utilisée contient le nombre de lignes à traiter, non ?
    Sinon là, vous ne lisez qu'une ligne dans la boucle (atemp contient 1 avec les lignes fichier présentées)

    A mon avis il faut réécrire le code proprement en vb.net.
    Pour palier l'urgence, avec j vous lisez les 2 premier, il suffit de lire aussi le 3ème.
    Traductions d'articles :
    La mémoire en .NET - Qu'est-ce qui va où ?
    Architecture DAL de haute performance et DTO ; Version C# : Partie 1,Partie 2,Partie 3 — Version VB.NET : Partie 1,Partie 2,Partie 3
    N'hésitez pas à consulter la FAQ VB.NET, le cours complet de Philippe Lasserre et tous les cours, articles et tutoriels.

Discussions similaires

  1. Réponses: 5
    Dernier message: 24/02/2011, 15h21
  2. Réponses: 3
    Dernier message: 28/11/2010, 19h56
  3. Select dans champ text identifiants séparés par des ;
    Par djanke dans le forum Langage SQL
    Réponses: 3
    Dernier message: 17/05/2010, 09h22
  4. Réponses: 1
    Dernier message: 24/07/2009, 15h40
  5. Réponses: 9
    Dernier message: 11/09/2007, 23h47

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