Aide sur split (pour un chat)

LoUsKy Messages postés 16 Date d'inscription mardi 23 juillet 2002 Statut Membre Dernière intervention 22 août 2002 - 22 août 2002 à 14:23
JeffLC Messages postés 73 Date d'inscription lundi 16 octobre 2000 Statut Membre Dernière intervention 20 février 2003 - 28 août 2002 à 11:02
Voila , g une variable ki contienttext "irc.server.com 353 pseudo #chan :pseudo1 pseudo2 pseudo3"
comment faire pour ke
text(0) = "pseudo1"
text(1) = "pseudo2"
text(2) = "pseudo3"
j'ai entendu parler d'un fonction spli() mais sans plus , quelqu'un pourait m'explike ?
merci.
LoUsKy
La racaille on the sky

8 réponses

cs_processus Messages postés 360 Date d'inscription vendredi 24 août 2001 Statut Membre Dernière intervention 9 juillet 2008 3
22 août 2002 à 15:41
Ds ton cas:

Dim varTbl as variant

vartbl= split(text, space(1))

' Résultats
' vartbl(5) = ":pseudo1"
' vartbl(6) = "pseudo2"' vartbl(7) "pseudo3"
Site Web de JDPROG
Présentation de MP3 Index
Logiciel d'indexation de fichier MP3

http://jdprog.fr.st
0
LoUsKy Messages postés 16 Date d'inscription mardi 23 juillet 2002 Statut Membre Dernière intervention 22 août 2002
22 août 2002 à 16:25
Comment faire kan on ne conne pas le nombre de personne connecter ?

LoUsKy
La racaille on the sky
0
JeffLC Messages postés 73 Date d'inscription lundi 16 octobre 2000 Statut Membre Dernière intervention 20 février 2003
22 août 2002 à 17:06
si tu utilises
vartbl= split(text, space(1))
alors le nombre de personnes connectés est égal à Ubound(vartbl)-4 car les cinq premiers éléments du tableau sont irc.server.com, 353, pseudo, = et #chan et que ce tableau démarre à zéro.
0
zefri Messages postés 33 Date d'inscription samedi 1 juin 2002 Statut Membre Dernière intervention 11 décembre 2002
24 août 2002 à 16:22
-------------------------------
Réponse au message :
-------------------------------

si tu utilises
vartbl= split(text, space(1))
alors le nombre de personnes connectés est égal à Ubound(vartbl)-4 car les cinq premiers éléments du tableau sont irc.server.com, 353, pseudo, = et #chan et que ce tableau démarre à zéro.

-------------------------------
Réponse au message :
-------------------------------

Comment faire kan on ne conne pas le nombre de personne connecter ?

LoUsKy
La racaille on the sky

-------------------------------
Réponse au message :
-------------------------------

Ds ton cas:

Dim varTbl as variant

vartbl=split(text, space(1))

' Résultats
' vartbl(5) = ":pseudo1"
' vartbl(6) = "pseudo2"' vartbl(7) "pseudo3"
Site Web de JDPROG
Présentation de MP3 Index
Logiciel d'indexation de fichier MP3

http://jdprog.fr.st

-------------------------------
Réponse au message :
-------------------------------

Voila , g une variable ki contienttext "irc.server.com 353 pseudo #chan :pseudo1 pseudo2 pseudo3"
comment faire pour ke
text(0) = "pseudo1"
text(1) = "pseudo2"
text(2) = "pseudo3"
j'ai entendu parler d'un fonction spli() mais sans plus , quelqu'un pourait m'explike ?
merci.
LoUsKy
La racaille on the sky
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
zefri Messages postés 33 Date d'inscription samedi 1 juin 2002 Statut Membre Dernière intervention 11 décembre 2002
24 août 2002 à 16:26
Moi je verrais plutôt un truc du genre

Dim vItem as Variant
Dim i as integer

For each vItem in Split( my_text, my_separator)
i = i + 1
text(i) = vItem
Next

avec my_text = pseudo1 pseudo2 pseudo3
et my_separator = " "

Ca marchera quel que soit le nombre de pseudo.

A +
0
JeffLC Messages postés 73 Date d'inscription lundi 16 octobre 2000 Statut Membre Dernière intervention 20 février 2003
26 août 2002 à 11:08
Split renvoie un tableau contenant toutes les sous-chaine d'une chaines relativement à un séparateur.
Donc tu bloucles sur un tableau pour remplir un tableau identique.

Si tu avais fais

Dim vItem as Variant
Dim i as integer
i= 0
For each vItem in Split(text, space(1))
i = i + 1
if i>5 then
text(i-5) = vItem
end if
Next
Là tu aurais remplis un tableau avec uniquement les pseudos. Mais en l'état ta boucle n'a pas d'utilité.
Par contre tu utilise une énumération For Each pour boucler sur un tableau et non pas une boucle Fro avec un compteur ce qui se révèle plus rapide à l'éxecution.
Tchao.
0
zefri Messages postés 33 Date d'inscription samedi 1 juin 2002 Statut Membre Dernière intervention 11 décembre 2002
27 août 2002 à 23:47
Hello !

Je maintiens que

Dim i as integer, vItem as variant, text as string
Dim a_text() as string
text "irc.server.com 353 pseudo #chan :pseudo1 pseudo2 pseudo3"

For each vItem in Split( Mid(Substr(my_text, ":")), my_separator)
a_text(i) = vItem
i = i + 1
Next

permet de remplir le tableau a_text() avec les pseudos contenus dans la chaine text.

Effectivement on aurait aussi vite fait d'écrire

a_text = Split( Mid(Substr(text, ":")), " ")
toujours avec text "irc.server.com 353 pseudo #chan :pseudo1 pseudo2 pseudo3"

Pour l'usage de For each tu as tout à fait raison c'est réputé plus long quand il s'agit de parcourir un tableau, moi personnellement je trouve juste ça plus cleen question syntaxe. Plus le code est propre, plus il est facile à comprendre, tant qu'on est pas à la chasse aux millisecondes moi je me dis que c'est pas la peine de compliquer la vie du programmeur qui passera après moi pour débuger ;p)
0
JeffLC Messages postés 73 Date d'inscription lundi 16 octobre 2000 Statut Membre Dernière intervention 20 février 2003
28 août 2002 à 11:02
D'accord si tu utilise Mid(Substr(my_text, ":")) tu remplis bien le tableau uniquement avec les pseudos. Donc cela ce défend.
Mais

si on fait

Dim i as integer, vItem as variant, text as string
Dim a_text() as string
Dim Pseudos_Text() as string
text "irc.server.com 353 pseudo #chan :pseudo1 pseudo2 pseudo3"

Pseudos_Text=Split( Mid(Substr(text,":")),space(1))

For each vItem in Split( Mid(Substr(text, ":")), my_separator)
a_text(i) = vItem
i = i + 1
Next

A la fin de l'éxécution a_text et Pseudos_Text contiennent les mêmes valeurs. Donc je maintiens que la boucle n'est pas utile ;-P.
Pour ce qui est de ton habitude de faire du code propre je te félicite. Boucler sur un tableau contenant un type de donné simple (Entier, doublle, ...) est en effet plus rapide par un compteur incrémenté, par contre si on boucle sur un tableau contenant des types évolués (définis par l'utilisateur, ou objet) l'énumération For Each se révèle plus rapide car le compilateur sait à quel type il a affaire et peut donc adresser directement sur une partie de mémoire à la bone taille (ce qui accélère l'éxécution et réduit la pile).
Tchao.
0
Rejoignez-nous