Demande d'aide , visual basic

Bonjour,
j'arrive pa à distinguer l'erreur ds cette fonction qui a pour but de décomposer une phrase en bloc de caractère et en bloc d'espace, le copilateur indique l'eereur suivante " Make sure that the maximum index on a list is less than the list size " au niveau de la ligne indiqué par une flèche :
aidez moi à découvrir l'erreur svp

Imports System.Console
Module Module1
Sub Main()
Dim msg As String = "ça marche ?"
Dim t(Len(msg)) As String
Console.WriteLine("mokréz")
Call Decomposer(msg, t)
Console.WriteLine("mokréz")
For i = 0 To t.Length - 1

Console.WriteLine(t(i))
Next
Console.WriteLine()
Console.ReadKey()
End Sub
Sub Decomposer(ByVal strMsg As String, ByRef TB() As String)
Dim i, j As Integer
j = 0
i = 0
Do
If (strMsg(i) <> " ") Then
While (strMsg(i) <> " ") And (i < strMsg.Length) <=== erreur
TB(j) &= TB(i)
i = i + 1
End While
End If
If (strMsg(i) = " ") Then
While (strMsg(i) = " ") And (i < strMsg.Length)
TB(j) &= TB(i)
i = i + 1

End While
End If
j = j + 1
Loop Until (i = strMsg.Length)
End Sub
End Module
Configuration: Windows XP Internet Explorer 8.0

4 réponses

  1. Prenons la phrase à décomposer "Salut les copains" qu'on attribue à une variable texte MaPhrase. Si on veut faire des blocs indépendants avec les 3 mots "Salut", "les" et copains, on leur attribue une variable texte également comme Mot1, Mot2 et Mot3 donc déclarer :

    Dim MaPhrase, Mot1, Mot2, Mot3 as string
    Utiliser le code Mid (variable texte principale, position de la première lettre du bloc texte à extraire, longueur en nombre de caractères du bloc texte à extraire)
    On aura donc
    Mot1 = Mid(MaPhrase,1,5) (ce qui donne : Salut)
    Mot2 = Mid(MaPhrase,7,3) (ce qui donne : les)
    Mot3 = Mid(MaPhrase,11,7) (ce qui donne : copains)

    Pour reconstruire MaPhrase (la variable peut s'appeler à partir de là différemment)

    MaPhrase = Mot1 & " " & Mot2 & " " & Mot3 ce qui donne : Salut les copains

    J'espère que c'est la réponse attendue !
    1. bonjour ,

      l'error se trouve o niveau de l'incrementation de la varaible 'i'

      la taille de la chaine "msg" est : 11

      mais que je fais Console.WriteLine(msg(11)) il m'affiche une error c'est logique car les indec commance par 0

      pour miuex comprender ta cahine :

      dim msg as string="ça marche ?"
      pour afficher le dernier caractère (?) je vais faire
      Console.WriteLine(msg(10)) pas Console.WriteLine(msg(11)) ok
      1. mais strMsg dans la fonction Decompser est passé en paramètre comme msg dont la valeur est "ça marche?" !!
        1. Bonsoir,

          je vais peut être dire une bêtise mais tu as défini strmsg comme une variable.
          sauf que tu n'as jamais indiqué à quoi était égal Mstrmsg.
          donc pour lui strmsg = ""
          d'ou la longueur de strmsg est indéfinissable.