je vais bien! j’espère que vous aussi....
La commande pour récupérer les champs dans une chaine avec des délimiteurs
comme StringField(Chaine$, Index, Delimiteur$) de Purebasic n'est pas souvent prévue
dans les autres langages, elle est pourtant très pratique pour lire les fichiers.csv
voici un ptit code pour contourner cette commande ailleurs
Cordialement
kernadec
Code : Tout sélectionner
;Fonction StringField(Chaine$, Index, Délimiteur$)
Global chaine$, nb.l, c.l, i.l
chaine$ = "10000;111.1234;222.5678;06;11;2000;a1;2;b3;4;5cd;6;7;8;9E" ;chaine d un fichier,csv avec separateur ";"
If Right(chaine$, 1) <> ";"
chaine$ = chaine$+ ";" ;test si le dernier separateur de champs est present ";" car il est obligatoire
EndIf
Debug chaine$
nb = 0
For i = 1 To Len(chaine$) + 1
If Right(Mid(chaine$, 1, i), 1) = ";" ;recherche le nombre de separateur ";" dans la chaine
nb = nb + 1
EndIf
Next i
If nb <> 0
Dim champ$(nb)
champ$(1) = chaine$
For i = 1 To nb ; boucle d'extraction des champs
c = 0
Repeat
c = c + 1
Until Right(Mid(champ$(i), 1, c), 1) = ";"
champ$(1 + i)=Right(champ$(i),Len(champ$(i))-c)
Debug Left(champ$(i), c - 1) ; affichage de chaque champs
Next i
EndIf