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 :

Manipulation de chaines.


Sujet :

VB.NET

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2015
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2015
    Messages : 46
    Points : 0
    Points
    0
    Par défaut Manipulation de chaines.
    Bonjour tout le monde,

    Je vous expose mon problème, j'ai récupérer les données d'un capteur qui sont des nombres en hexadécimale. Mon capteur me rend 128 données, de 1 a 128. les données sont de cette forme par exemple 123.1230 456.32 4782.25 256 147 2584.25 142.1478 9.23 147.23 ..........

    moi je veux filtrer ces données en éliminant les 21 premières données et les 23 dernières données. et par exemple les données 29 à 23 aussi je veux les éliminés.

    j'espère que je suis clair sur ma question.

    Merci d'avance.

  2. #2
    Membre expert Avatar de jopopmk
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2011
    Messages
    1 856
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2011
    Messages : 1 856
    Points : 3 570
    Points
    3 570
    Par défaut
    Salut,

    un truc simple c'est de splitter sur ton séparateur et de boucler dessus en vérifiant que tu es hors plage à éliminer.
    Pour être un peu moins bourrin tu pourrais commencer ton parcours directement après la plage initiale, et le finir avant la plage finale.
    Exemple (à quelques iota près) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    int total = 128;
    string values = "123.12 456.23 ...";
    string valuetab = values.Split(' ');
    int start = 21;
    int stop = max -23;
     
    for (int current = start; current<stop ; current++) {
      // on vérifie qu'on est pas dans la(les) plage(s) à éliminer, ici 50 à 100
      if (current < 50 && current > 100) {
        // ici valuetab[current] est à considérer
      }
    }
    Plus je connais de langages, plus j'aime le C.

  3. #3
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2015
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2015
    Messages : 46
    Points : 0
    Points
    0
    Par défaut
    Bonjour Mr Jopopmk,

    Je crois que j'ai oublié un petit détail, c'est que les valeurs que je reçois de mon capteur change a chaque fois que je demande une mesure. Donc se sont des données qui change a chaque mesure pour les données que j'ai données auparavant c'est juste un exemple.

    Merci beaucoup.

  4. #4
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2015
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2015
    Messages : 46
    Points : 0
    Points
    0
    Par défaut
    Et je programme en visual basic

  5. #5
    Membre émérite Avatar de mactwist69
    Homme Profil pro
    Développement VB.NET
    Inscrit en
    Janvier 2007
    Messages
    1 707
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Développement VB.NET
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 707
    Points : 2 528
    Points
    2 528
    Par défaut
    Même si ce n'étiat pas du vb, le conseil était bon.
    Et le code lisible...

    Le Split() pour diviser ta chaîne et parcourir les élément de ta liste nouvellement créée pour sélectionner celle qui t'intéresse.
    L'avenir appartient à ceux... dont les ouvriers se lèvent tôt. (Coluche)

  6. #6
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2015
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2015
    Messages : 46
    Points : 0
    Points
    0
    Par défaut
    bonjour,

    Pourrez vous m'aider a le faire en VB.

    Merci d'avance.

  7. #7
    Membre émérite Avatar de mactwist69
    Homme Profil pro
    Développement VB.NET
    Inscrit en
    Janvier 2007
    Messages
    1 707
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Développement VB.NET
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 707
    Points : 2 528
    Points
    2 528
    Par défaut
    C'est ce que j'ai fait : Utiliser le Split pour séparer la chaîne en une liste de string :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Dim Liste_mesure as list(Of String)
    Liste_mesure  = MaChaine.Split(" ")
    Puis tu boucles sur liste_mesure.

    Je ne vois pas comment plus vous aidez... Il va bien falloir que vous essayez pour comprendre comment ça marche...
    L'avenir appartient à ceux... dont les ouvriers se lèvent tôt. (Coluche)

  8. #8
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2015
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2015
    Messages : 46
    Points : 0
    Points
    0
    Par défaut
    Merci pour votre réponse,

    je vais vous expliqué comment ça marche:

    j'ai un capteur Clorimètre, a chaque fois que je lui demande des mesures, il me rend une chaine de valeur (cette chaine de valeur est constituée de 128 valeur).
    Moi j'aurai besoin que de quelques données sur 128.

    ce que j'aurai besoin c'est les valeurs qui sont de 22 à 28 et de 33 à 38, de 43 à 48, ........, 98 à 105 les autres valeurs sont a éliminé.

    J'espère bien que vous me donnez une solution je suis vraiment coincé.
    merci.

  9. #9
    Membre émérite Avatar de mactwist69
    Homme Profil pro
    Développement VB.NET
    Inscrit en
    Janvier 2007
    Messages
    1 707
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Développement VB.NET
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 707
    Points : 2 528
    Points
    2 528
    Par défaut
    J'espère bien que vous me donnez une solution je suis vraiment coincé.
    Je donne des solutions... à mon employeur contre rémunération.
    A vous par contre, je donne déjà de mon temps et des pistes, c'est déjà pas mal, je trouve.

    Vous bloquez ?
    Montrez moi le code sur lequel vous bloquez, je vous aiderai à y voir plus clair.
    Tant que vous ne montrerez pas de code et expliquez où vous coincez, votre question n'avancera pas.

    Je vous offre beaucoup mieux qu'une solution, je vous offre mon soutient à votre apprentissage...
    Ça n'a pas de prix...
    L'avenir appartient à ceux... dont les ouvriers se lèvent tôt. (Coluche)

  10. #10
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2015
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2015
    Messages : 46
    Points : 0
    Points
    0
    Par défaut
    Merci beaucoup,

    bon, je vous donne mon code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Sub Main()
            Dim Data As String
            Dim iT As Integer = 100
            spectro.integrationTime = iT
            Data = spectro.dataline(average:=1, count:=1)
            Console.Write(Data)
            Console.Read()
    End Sub
    là, Data est récupéré sur 128 valeurs (décimal)
    et je doit filtrer Data de la façon dont j'ai expliquer avant.

    j'ai essayé avec les commande suivantes:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Resultat = Right(Data, Len(Data) - 21)
    Resultat = Left(Data, Len(Data) - 23)
    le problème que j'ai trouvé c'est qu'il me supprime pas les valeurs mais les nombres un par un par exemple sur la dernière valeur 148.258 il me supprime nombre par nombre. et avec ça aussi je sais pas comment faire pour supprimer les valeurs au milieu de la chaine.

    Merci pour une autre fois.

  11. #11
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2015
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2015
    Messages : 46
    Points : 0
    Points
    0
    Par défaut utilisation de chaine
    Bonjour tous le monde,

    J'expose mon problème, j'ai une chaine de données

    57.75 54.4375 20.3125 29.125 51.875 21.1875 12.125 27.0625 52.6875 20.375
    10.4375 9.625 9.375 9.1875 9 8.6875 9.5 9.3125 9 11.5
    21.1875 22.625 22.8125 22.9375 21.9375 23.875 21.75 23.0625 22.5625 21.8125
    de 30 valeurs

    je veux supprimer les 5 première valeurs et de la 12 eme a la 15 eme valeurs et de la 25 a la 30 eme valeurs.

    Merci pour votre aide.

  12. #12
    Membre éprouvé

    Homme Profil pro
    Inscrit en
    Mars 2012
    Messages
    691
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Israël

    Informations forums :
    Inscription : Mars 2012
    Messages : 691
    Points : 929
    Points
    929
    Par défaut
    Salut

    Comment as tu defini ta chaine ?

  13. #13
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2015
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2015
    Messages : 46
    Points : 0
    Points
    0
    Par défaut
    Voila le programme,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     Dim Data As String
            Dim T(200) As String
     
            Data = spectro.dataline(average:=1, count:=1)
            'Data = Left(Data, Len(Data))
            'Data = Right(Data, Len(Data))
            Console.Write(Data & " ")
     
            T = Split(Data, Data(3)
            Console.Write(T)

    Data c'est ma chaine, en faite ce sont les données d'un capteur donc les valeurs change a chaque fois j'appel le capteur pour qu'il me donne des données"Data"

  14. #14
    Nouveau membre du Club
    Profil pro
    Développeur Web
    Inscrit en
    Juillet 2013
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : France, Lot et Garonne (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juillet 2013
    Messages : 34
    Points : 25
    Points
    25
    Par défaut
    Le temps de répondre, le sujet a été déplacer dans celui ci ... :S

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
        Dim chaine As String = "57.75 54.4375 20.3125 29.125 51.875 21.1875 12.125 27.0625 52.6875 20.375 10.4375 9.625 9.375 9.1875 9 8.6875 9.5 9.3125 9 11.5 21.1875 22.625 22.8125 22.9375 21.9375 23.875 21.75 23.0625 22.5625 21.8125"
        Dim i As Integer = 1
        Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
     
            For Each elements As String In chaine.Split(" ")
                If i > 5 And i < 12 Or i > 15 And i < 25 Then
                    MsgBox(elements)
                End If
                i = i + 1
            Next
     
        End Sub

  15. #15
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2015
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2015
    Messages : 46
    Points : 0
    Points
    0
    Par défaut
    Merci beaucoup pour votre réponse.
    J'explique encore un petit peu,

    les données que je vous ai donnés avant, je les reçois comme une chaine que j'ai appellé Data.
    Donc j'utilise pas la chaine comme nombre parce que je reçois 128 valeur du capteur,

    avant, je vous ai juste données un exemple de valeurs pour dire quelle sorte de valeurs que je reçois.

  16. #16
    Nouveau membre du Club
    Profil pro
    Développeur Web
    Inscrit en
    Juillet 2013
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : France, Lot et Garonne (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juillet 2013
    Messages : 34
    Points : 25
    Points
    25
    Par défaut
    Si je comprend bien, vous recevez non pas 30 mais 128 valeurs qui peuvent être des décimales et sont séparées par des espaces le tout dans une variable "Data" ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
        Dim i As Integer = 1
        Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
     
            For Each elements As String In Data.Split(" ")
                If i > 5 And i < 12 Or i > 15 And i < 25 Or i >30 Then
                    ' Traitement de chaques éléments récupérés, par exemple en affichant un msgbox :
                    MsgBox(elements)
                End If
                i = i + 1
            Next
       End Sub

  17. #17
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2015
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2015
    Messages : 46
    Points : 0
    Points
    0
    Par défaut
    Merci pour votre réponse.

    j'ai testé le programme est il me donne des erreurs, je vous poste les erreurs et si c'est possible que vous me donnez une explication.

    Voila les erreurs:
    C:\Users\microbox\documents\visual studio 2013\Projects\Axspectrodll\Axspectrodll\Module1.vb(14) : error BC30506: La clause Handles requiert une variable WithEvents définie dans le type conteneur ou l'un de ses types de base.
    C:\Users\microbox\documents\visual studio 2013\Projects\Axspectrodll\Axspectrodll\Module1.vb(16) : error BC30456: 'Split' n'est pas un membre de 'Data'.
    C:\Users\microbox\documents\visual studio 2013\Projects\Axspectrodll\Axspectrodll\Module1.vb(45) : error BC30188: Déclaration attendue.
    C:\Users\microbox\documents\visual studio 2013\Projects\Axspectrodll\Axspectrodll\Module1.vb(48) : error BC30429: 'End Sub' doit être précédé d'un 'Sub' correspondant.
    ca doit être ça le programme:
    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
    Module Module1
     
        Dim spectro As New axSpectro.Spectro
        Sub Main()
            Dim Data As String
            Dim iT As Integer = 100
     
            spectro.integrationTime = iT
            Data = spectro.dataline(average:=1, count:=1)
     
            Dim i As Integer = 1
        End Sub
     
        Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
     
            For Each elements As String In Data.Split(" ")
                If i > 5 And i < 12 Or i > 15 And i < 25 Or i > 30 Then
                    ' Traitement de chaques éléments récupérés, par exemple en affichant un msgbox :
                    MsgBox(elements)
                End If
                i = i + 1
            Next
        End Sub
     
    End Module
    Merci beaucoup,

  18. #18
    Nouveau membre du Club
    Profil pro
    Développeur Web
    Inscrit en
    Juillet 2013
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : France, Lot et Garonne (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juillet 2013
    Messages : 34
    Points : 25
    Points
    25
    Par défaut
    'Split' n'est pas un membre de 'Data'
    Essaie voir ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Dim chaine As String = Data
            For Each elements As String In chaine.Split(" ")
                If i > 5 And i < 12 Or i > 15 And i < 25 Or i >30 Then
                    ' Traitement de chaques éléments récupérés, par exemple en affichant un msgbox :
                    MsgBox(elements)
                End If
                i = i + 1
            Next
    au lieu de :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
            For Each elements As String In Data.Split(" ")
                If i > 5 And i < 12 Or i > 15 And i < 25 Or i >30 Then
                    ' Traitement de chaques éléments récupérés, par exemple en affichant un msgbox :
                    MsgBox(elements)
                End If
                i = i + 1
            Next

    'End Sub' doit être précédé d'un 'Sub' correspondant.
    Je ne vois pas, en tout cas dans le code que tu donnes, de Sub manquant.

  19. #19
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2015
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2015
    Messages : 46
    Points : 0
    Points
    0
    Par défaut
    Salut,

    J'ai le programme mais il me donne toujours des erreurs comme:
    error BC30506: La clause Handles requiert une variable WithEvents définie dans le type conteneur ou l'un de ses types de base.
    error BC30112: 'System.Data' est un espace de noms et ne peut pas être utilisé en tant qu'expression.
    ========== Génération*: 0 a réussi, 1 a échoué, 0 mis à jour, 0 a été ignoré ==========

    je vous donne le code pour bien voir ce que j'ai mis:

    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
    Dim spectro As New axSpectro.Spectro
        Sub Main()
            Dim Data As String
            Dim iT As Integer = 100
     
            Dim T(200) As String
            spectro.integrationTime = iT
            Data = spectro.dataline(average:=1, count:=1)
     
        End Sub
        Dim i As Integer = 1
        Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
     
            Dim chaine As String = Data
            For Each elements As String In chaine.Split(" ")
                If i > 5 And i < 12 Or i > 15 And i < 25 Or i > 30 Then
                    ' Traitement de chaques éléments récupérés, par exemple en affichant un msgbox :
                    MsgBox(elements)
                End If
                i = i + 1
            Next
     
        End Sub

  20. #20
    Expert confirmé
    Avatar de wallace1
    Homme Profil pro
    Administrateur systèmes
    Inscrit en
    Octobre 2008
    Messages
    1 966
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Administrateur systèmes
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Octobre 2008
    Messages : 1 966
    Points : 4 005
    Points
    4 005
    Billets dans le blog
    7
    Par défaut
    Bonjour,

    et si tu commençais par renommer ta variable Data en autre chose qui ne corresponds pas à un mot clé du langage de programmation :

    exemple :

    De plus il faut revoir la manière dont tu peux accéder à tes variables car en l'état Data est bien déclaré 2 fois dans 2 corps de méthode différents !!

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Manipulation de chaines
    Par tchoukapi dans le forum Shell et commandes GNU
    Réponses: 12
    Dernier message: 04/09/2006, 17h41
  2. [D7] Manipulations de chaines
    Par jer64 dans le forum Delphi
    Réponses: 2
    Dernier message: 21/07/2006, 22h16
  3. [PLSQL] Manipulation des chaines.
    Par zero d dans le forum Oracle
    Réponses: 5
    Dernier message: 14/12/2005, 18h27
  4. Réponses: 4
    Dernier message: 20/08/2004, 10h59
  5. Fonctions de manipulation des chaines et des dates
    Par Fares BELHAOUAS dans le forum Débuter
    Réponses: 3
    Dernier message: 09/11/2002, 22h43

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