Partagez votre expérience de PureBasic avec les autres utilisateurs.
Droopy
Messages : 1151 Inscription : lun. 19/juil./2004 22:31
Message
par Droopy » sam. 09/févr./2008 10:05
J'en avais besoin, désolé si ça a déjà été publié
Code : Tout sélectionner
Procedure ForEachField(String.s,Delimiter.s,*Function)
Index=1
While StringField(String,Index,Delimiter)<>""
CallFunctionFast(*Function,StringField(String,Index,Delimiter))
Index+1
Wend
EndProcedure
;{/ Example
Chaine.s="1,2,3"
Procedure Affiche(Chaine.s)
PrintN(Chaine)
EndProcedure
OpenConsole()
ConsoleTitle("ForEachField")
ForEachField(Chaine,",",@Affiche())
Input()
;}
Ar-S
Messages : 9540 Inscription : dim. 09/oct./2005 16:51
Contact :
Message
par Ar-S » sam. 09/févr./2008 12:18
Salut Droopy, tu peux m'expliquer à quoi ça sert exactement ?
parce que l'affichage des 1 2 3.. c'est pas très explicite (et surtout je suis encore une belle quiche)
Chris
Messages : 3731 Inscription : sam. 24/janv./2004 14:54
Contact :
Message
par Chris » sam. 09/févr./2008 13:38
Ben sans avoir testé le code, ça doit afficher chaque champs d'une chaine délimitée par des virgules.
Ca peut servir à récupérer les données d'un fichiers .csv, par exemple.
Pas bête, comme code.
Ar-S
Messages : 9540 Inscription : dim. 09/oct./2005 16:51
Contact :
Message
par Ar-S » sam. 09/févr./2008 13:47
Ah okokok, superbe
Droopy
Messages : 1151 Inscription : lun. 19/juil./2004 22:31
Message
par Droopy » sam. 09/févr./2008 13:50
tout a fait thierry, ça peut servir à traiter chaque ligne d'un fichier csv
lionel_om
Messages : 1500 Inscription : jeu. 25/mars/2004 11:23
Localisation : Sophia Antipolis (Nice)
Contact :
Message
par lionel_om » dim. 17/févr./2008 14:35
Y'a un petit bug.
La boucle While n'est pas très adpatée (sauf si c'ets vraiment ce que tu as voulu faire) :
Code : Tout sélectionner
Procedure ForEachField(String.s,Delimiter.s,*Function)
Nb = CountString(String,Delimiter) + 1
For i = 1 To Nb
CallFunctionFast(*Function,StringField(String,i,Delimiter))
Next i
EndProcedure
;{/ Example
Chaine.s="1,2,,3"
Procedure Affiche(Chaine.s)
PrintN(Chaine)
EndProcedure
OpenConsole()
ConsoleTitle("ForEachField")
ForEachField(Chaine,",",@Affiche())
Input()
;}
Webmestre de
Basic-univers
Participez à son extension: ajouter vos programmes et partagez vos
codes !
Backup
Messages : 14526 Inscription : lun. 26/avr./2004 0:40
Message
par Backup » dim. 17/févr./2008 15:05
Chris a écrit : Ben sans avoir testé le code, ça doit afficher chaque champs d'une chaine délimitée par des virgules.
Ca peut servir à récupérer les données d'un fichiers .csv, par exemple.
Pas bête, comme code.
tu veux dire comme
????
Droopy
Messages : 1151 Inscription : lun. 19/juil./2004 22:31
Message
par Droopy » dim. 17/févr./2008 17:02
bien vu Lionel
Chris
Messages : 3731 Inscription : sam. 24/janv./2004 14:54
Contact :
Message
par Chris » dim. 17/févr./2008 17:03
Dobro a écrit : Chris a écrit : Ben sans avoir testé le code, ça doit afficher chaque champs d'une chaine délimitée par des virgules.
Ca peut servir à récupérer les données d'un fichiers .csv, par exemple.
Pas bête, comme code.
tu veux dire comme
????
Oui, sauf que la fonction (enfin, si j'ai bien compris, vu que je l'ai pas encore testée), te renvoie le contenu de la totalité des champs en un seul appel.
Droopy
Messages : 1151 Inscription : lun. 19/juil./2004 22:31
Message
par Droopy » dim. 17/févr./2008 22:34
Oui, sauf que la fonction te renvoie le contenu de la totalité des champs en un seul appel.
Non elle traite chaque champ avec la fonction appelée