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

Windows Forms Discussion :

[VB.NET] lecture fichier texte et détection des mots


Sujet :

Windows Forms

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    137
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 137
    Par défaut [VB.NET] lecture fichier texte et détection des mots
    salut tout le monde.
    Visual Basic 2005 edtion express.
    Je suis en train de coder une application pour la lecture dans un fichier texte et détecter certains mots dans ce fichier par contre mon souci c'est que je n'arrive pas à exploiter cela :
    mon projet consiste à récupérer des trames "CAN" dans un fichier texte (.dbc). Dans ce fichier il y'a plusieurs trames qu'on reconnait par leur identifiant "ID" et qui commence par "BO_" exemple:

    BO_ 1160 Trm_CMD_IS_CMM: 6 SUPSYM
    SG_ Temp_Huile_Mot : 47|8@0- (1,0) [-128|127] "" CMM
    SG_ Temp_Eau_Mot : 7|8@0- (1,0) [-128|127] "" CMM

    BO_ 841 Trm_CMD_IS_BV: 4 SUPSYM
    SG_ Etat_embrayage : 27|4@0+ (1,0) [0|15] "" BVM_Proto

    BO_ 773 Trm_CMD_VOL: 2 SUPSYM
    SG_ Angle_Volant_Capteur : 7|16@0- (0.1,0) [-780|780] "Degr," Angle_volant


    donc ce que je veux c'est détecter les "BO_" au début et ensuite choisir l'identifiant qui va avec (841 ou 773 ou 1160...)

    le code que j'ai écrit pour la lecture dans le fichier:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
      Do
                    ligne = SR.ReadLine()
                    SR.Close()
                Loop Until (str = ligne.IndexOf("BO_"))
    avec déclarations:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Dim SR As StreamReader = File.OpenText("C:\user\U256265\Visual Studio 2005\WindowsApplication1\F2005.dbc")
    après pour le choix de l'identifiant je sais pas si ce code va marcher:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
                If "BO_" & 100 Then
               SW.writeline("")
                End If
    j'attends votre aide SVP.

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    137
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 137
    Par défaut
    et mon autre souci c'est que j'ai un problème avec l'appel d'une procédure qui fait appel à des élément d'une structure:
    J'ai une structure déclarée dans une classe (canusb) comme suite
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
        Public Structure tCanMsgStruct
            Public m_dwID As Int32          ' DWORD m_dwID;     // CAN Identifier
            Public m_bFF As Byte          
            Public m_bDLC As Byte          
            <MarshalAs(UnmanagedType.ByValArray, sizeConst:=8)> _
            Public m_bData() As Byte        
            Public m_dwTime As Integer
    j'utilise cette structure dans une autre classe (deocdage) dans les paramètres d'une procédure:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
      Public Sub decoder(ByVal tempRxCanMsg As Canusb.tCanMsgStruct)
            Try
     
                Dim ID_received As Integer = tempRxCanMsg.m_dwID
                Dim DLC_received As Integer = tempRxCanMsg.m_bDLC
     
     
                If tempRxCanMsg.m_dwID = &H100 Then  '....etc
               '...
           end if
    end sub
    et là je veux appeler cette procédure dans la classe Form1:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
      Call oDecodage.decoder(tempRxCanMsg.m_dwID)
    mais cela me génère une erreur en me disant que c'est pas le même type.
    mais tempRxCanMsg.m_dwID fais bien partie ce cette structure et je comprend pas pourquoi il le prend pas en paramètres!

    j'espère avoir des solutions...

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    137
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 137
    Par défaut
    toujours pas de réponses à ce sujet.....
    un peu déçu !

  4. #4
    Membre expérimenté
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    238
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 238
    Par défaut
    Pour ta premiere question:
    Il te faut lire ton fichier ligne à ligne. Je me suis pas trop pencher sur ton code mais ca a l'air d'être pas trop mal. Si ca marche pas va voir ici.
    Pour chaque ligne tu utilises la fonction Trim() (pour suprimer les caractère vide a gauche et à droite de ta chaine) et tu utilises ensuite la fonction StartWith():

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    String ligne;
    ...
    if ( ligne.Trim().StartWith("BO_"))
    {
        ....
    }
    regarde la MSDN si tu veux plus d'info sur ces fonctions mais c'est assez simple .

    Pour ta seconde question ta fonction attend une Structure .Quel est le type de "tempRxCanMsg.m_dwID"

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    137
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 137
    Par défaut
    merci pour ton aide mais je te rappelle que je développe sous VB.NET.
    pour ta question sur le type de tempRxCanMsg.m_dwID je crois que sa déclaration est faite dans le code que j'ai ecris concernant la structure mais je le réécris:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    Public Structure tCanMsgStruct
            Public m_dwID As Int32          ' DWORD m_dwID;     // CAN Identifier
     
            Public m_bFF As Byte          
            Public m_bDLC As Byte          
            <MarshalAs(UnmanagedType.ByValArray, sizeConst:=8)> _
            Public m_bData() As Byte        
            Public m_dwTime As Integer     
        End Structure
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Dim tempRxCanMsg As Canusb.tCanMsgStruct
    donc tempRxCanMsg.m_dwID est un integer.

  6. #6
    Membre émérite
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2004
    Messages
    458
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France

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

    Informations forums :
    Inscription : Janvier 2004
    Messages : 458
    Par défaut
    salut
    pour ton 2eme probleme ca serait pas ca plutot
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Call oDecodage.decoder(tempRxCanMsg)

Discussions similaires

  1. Lecture fichier texte à 3 champs séparés par des "|"
    Par Tony-ESAIP dans le forum VB.NET
    Réponses: 3
    Dernier message: 18/07/2014, 09h58
  2. [Débutant] Lecture fichier texte C# Traduction du VB.NET
    Par Dark Nik dans le forum C#
    Réponses: 2
    Dernier message: 06/10/2011, 09h43
  3. Réponses: 3
    Dernier message: 28/11/2010, 19h56
  4. Réponses: 2
    Dernier message: 24/05/2008, 10h14
  5. [VB.NET]Problème lecture fichier texte
    Par zouhib dans le forum Windows Forms
    Réponses: 2
    Dernier message: 29/05/2006, 16h05

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