Page 1 sur 1
ForEachField
Publié : sam. 09/févr./2008 10:05
par Droopy
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()
;}
Publié : sam. 09/févr./2008 12:18
par Ar-S
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)
Publié : sam. 09/févr./2008 13:38
par Chris
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.
Publié : sam. 09/févr./2008 13:47
par Ar-S
Ah okokok, superbe

Publié : sam. 09/févr./2008 13:50
par Droopy
tout a fait thierry, ça peut servir à traiter chaque ligne d'un fichier csv

Publié : dim. 17/févr./2008 14:35
par lionel_om
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()
;}
Publié : dim. 17/févr./2008 15:05
par Backup
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
????

Publié : dim. 17/févr./2008 17:02
par Droopy
bien vu Lionel

Publié : dim. 17/févr./2008 17:03
par Chris
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.
Publié : dim. 17/févr./2008 22:34
par Droopy
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