Aide sur split (pour un chat)

Signaler
Messages postés
16
Date d'inscription
mardi 23 juillet 2002
Statut
Membre
Dernière intervention
22 août 2002
-
Messages postés
73
Date d'inscription
lundi 16 octobre 2000
Statut
Membre
Dernière intervention
20 février 2003
-
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

Messages postés
360
Date d'inscription
vendredi 24 août 2001
Statut
Membre
Dernière intervention
9 juillet 2008
3
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
Messages postés
16
Date d'inscription
mardi 23 juillet 2002
Statut
Membre
Dernière intervention
22 août 2002

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

LoUsKy
La racaille on the sky
0
Messages postés
73
Date d'inscription
lundi 16 octobre 2000
Statut
Membre
Dernière intervention
20 février 2003

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
Messages postés
33
Date d'inscription
samedi 1 juin 2002
Statut
Membre
Dernière intervention
11 décembre 2002

-------------------------------
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
Messages postés
33
Date d'inscription
samedi 1 juin 2002
Statut
Membre
Dernière intervention
11 décembre 2002

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
Messages postés
73
Date d'inscription
lundi 16 octobre 2000
Statut
Membre
Dernière intervention
20 février 2003

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
Messages postés
33
Date d'inscription
samedi 1 juin 2002
Statut
Membre
Dernière intervention
11 décembre 2002

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
Messages postés
73
Date d'inscription
lundi 16 octobre 2000
Statut
Membre
Dernière intervention
20 février 2003

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