Problème avec la fonction Split

Résolu
mikes32 Messages postés 11 Date d'inscription lundi 20 décembre 2010 Statut Membre Dernière intervention 28 décembre 2010 - 24 déc. 2010 à 16:50
cs_ShayW Messages postés 3258 Date d'inscription jeudi 26 novembre 2009 Statut Membre Dernière intervention 3 décembre 2019 - 28 déc. 2010 à 21:40
Bonjour à tous !

Je me présente, je m'appelle Mickaël et je suis étudiant en école d'ingénieurs. Je voudrais faire un code qui me permettrait d'extraire et de ranger suivant les caractères à partir d'une chaîne principale qui change:
En fonction d'une chaîne de caractère donnée par exemple: chaine1()= G1 X52.8 Y68
Z95
G1 X48 Y96
Z95
En supposant que chaine1() est un tableau de K-lignes.

Je voudrais extraire les fonctions G, X, Y, et Z dans 4 tableaux différents tout en conservant l'ordre.
En effet, je voudrai exploiter ce rangement pour "dessiner" un chemin d'outil.

Je pensais procéder ainsi, mais cela ne fonctionne pas du tout:
Dim chaine1(),chaine2,fonctionG(),fonctionX(),fonctionY(),fonctionZ() as string
For i=1 to k
chaine2=chaine(i).Split(" ")
If chaine2="G..." then
fonctionG()=chaine2
End If
If chaine2="X..." then
fonctionX()=chaine2
End if
If chaine2="Y..." then
fonctionY()=chaine2
End if
If chaine2="Z..." then
fonctionZ()=chaine2
End if
Next i

J'ai donc plusieurs problèmes, le premier étant que je n'arrive pas à exploiter la fonction Split...et je ne comprends pas pourquoi. Ensuite, je pensais utiliser les expressions régulières pour les conditions If mais je doute que celle que j'ai écrite soit bonne: "[G][0-99]"...

En espérant avoir un éclairage sur la fonction Split et sur les métacaractères ...

Merci d'avance !
Joyeux Noël à tous !
A voir également:

27 réponses

Profil bloqué
28 déc. 2010 à 19:02
Salut Mickaêl
colles ce code pour ton bouton
Cela fonctionne
L'erreur vient de la fin du fichier .Txt qui contenait un espace. Et comme le séparateur est justement un espace le programme attendait après ce dernier espace des données iso pour former la dernière ligne. Et comme il n'y avait pas de données le programme plantait

        Dim chemin As String
        Dim line As String
        Dim j, c, k As Integer
        Dim iso() As String
        Dim chaine As String
        Dim Fiso() As String
        Dim Giso() As String
        Dim Miso() As String
        Dim Siso() As String
        Dim Xiso() As String
        Dim Yiso() As String
        Dim Ziso() As String
        Dim isochaine() As String
        Dim delimiter As Char
        Dim iter, iter1 As Long
        Dim gindex, mindex, findex, sindex, xindex, yindex, zindex As Long

        'chemin = "F:\Cours\Birse\SIM Info\Projet\Code.txt"
        chemin = "D:\Outil.txt"
        Dim stm As New IO.StreamReader(chemin)
        k = 0
        j = 0
        c = 0
        'Lecture et Chargement dans un tableau de chaînes
        ReDim iso(0)
        line = stm.ReadLine()
        While line <> Nothing
            iso(k) = line
            Console.WriteLine(line)
            k = k + 1
            ReDim Preserve iso(k)
            line = stm.ReadLine()
        End While
        ReDim Preserve iso(k - 1)

        'Ecriture du tableau de chaînes et vérification graphique
        chaine = ""
        For i = 1 To k - 1
            chaine = chaine & iso(i) & " "
            chaine = chaine & vbCrLf
        Next i
        MsgBox(chaine)
        gindex = 0
        mindex = 0
        findex = 0
        sindex = 0
        xindex = 0
        yindex = 0
        zindex = 0
        delimiter = " "
        For iter = 0 To iso.Length - 1
            isochaine = iso(iter).Split(delimiter)
            For iter1 = 0 To isochaine.Length - 1
                Select Case isochaine(iter1).Substring(0, 1)
                    Case "F" : ReDim Preserve Fiso(findex)
                        Fiso(findex) = isochaine(iter1).Substring(1) + " "
                        findex = findex + 1

                    Case "G" : ReDim Preserve Giso(gindex)
                        Giso(gindex) = isochaine(iter1).Substring(1) + " "
                        gindex = gindex + 1

                    Case "M" : ReDim Preserve Miso(mindex)
                        Miso(mindex) = isochaine(iter1).Substring(1) + " "
                        mindex = mindex + 1

                    Case "S" : ReDim Preserve Siso(sindex)
                        Siso(sindex) = isochaine(iter1).Substring(1) + " "
                        sindex = sindex + 1

                    Case "X" : ReDim Preserve Xiso(xindex)
                        Xiso(xindex) = isochaine(iter1).Substring(1) + " "
                        xindex = xindex + 1

                    Case "Y" : ReDim Preserve Yiso(yindex)
                        Yiso(yindex) = isochaine(iter1).Substring(1) + " "
                        yindex = yindex + 1

                    Case "Z" : ReDim Preserve Ziso(zindex)
                        Ziso(zindex) = isochaine(iter1).Substring(1) + " "
                        zindex = zindex + 1
                End Select
                MessageBox.Show("fonction Iso : " & isochaine(iter1))
            Next
        Next


La théorie, c'est quand on sait tout et que rien ne fonctionne. La pratique, c'est quand tout fonctionne et que personne ne sait pourquoi.

GRENIER Alain
3
Rejoignez-nous