Mais hélàs il faut que la chaine que l'on passe en paramètres à Stringfield() ne comporte pas d'espace superflu ( en admettant que l'on veut récupérer chacun des mots entre les espaces)
car si il y a un espace entre 2 mots , stringfield() va pioché entre les 2 , c'est à dire rien , et vous renvoyer un #NULL
en admettant que vous avez ce genre de chaine à décortiqué :
Code : Tout sélectionner
TEXT$ = "Cette Chaine de caracteres à des espaces superflu"
; Sans PackString
For i = 1 To CountString(TEXT$,Chr(32))
Debug StringField(TEXT$,i,Chr(32))
Next
tandis qu'avec PackString :
Code : Tout sélectionner
TEXT$ = "Cette Chaine de caracteres à des espaces superflu"
TEXT$ = PackString(TEXT$,Chr(32))
; avec PackString
For i = 1 To CountString(TEXT$,Chr(32))+1
Debug StringField(TEXT$,i,Chr(32))
Next
Sortie :
La fameuse fonction :Cette
Chaine
de
caracteres
à
des
espaces
superflu
Code : Tout sélectionner
Procedure.s PackString(string.s, separator.s)
Protected Char.a=0
Protected Fill.a=0
Protected Out$
For i = 1 To Len(string)
Char = Asc(Mid(string,i,1))
If Char <> 32
Fill = 1
Out$ + Chr(Char)
EndIf
If Char = 32 And Fill = 1
Fill = 0
Out$ + separator
EndIf
Next
ProcedureReturn Out$
EndProcedure