Page 1 sur 1

Split

Publié : sam. 16/oct./2004 18:51
par Thyphoon
Je prépare une commande Split !
mais voilà je rencontre un petit pb
j'ai une chaine et je veux que la chaine sois découpé par une un ou des caractères de reférence voici mon code

Code : Tout sélectionner

Dim Objet_Script.s(50)

Objet_Script(1) = "Line 1 " + Chr(13) + Chr(10) + "Line 2" + Chr(13) + Chr(10) + "Line 3" + Chr(13) + Chr(10) + "Line 4" + Chr(13) + Chr(10) + "Line 5"
d = 1
r = 1
z = 1
While r > 0
  r = FindString(Objet_Script(z), Chr(13) + Chr(10), d)
  f = r
  If f = 0 : f = Len(Objet_Script(z)) : EndIf
  Debug Mid(Objet_Script(z), d, f - 1)
  d = f + 2
Wend
au lieu d'afficher dans le debugger
Line 1
Line 2
Line 3
Line 4
Line 5
ça m'affiche ça
Line 1
Line 2||Line 3|
Line 3||Line 4||Line 5
Line 4||Line 5
Line 5
Et je comprends pas pourquoi apparment la commande FindString ne s'arrête pas au prochain caractères de ref trouvé :o( Est ce bien normal ?
Merci d'avance

Publié : sam. 16/oct./2004 19:26
par nico

Code : Tout sélectionner

Dim Objet_Script.s(50) 

Objet_Script(1) = "Line 1 " + Chr(13) + Chr(10) + "Line 2" + Chr(13) + Chr(10) + "Line 3" + Chr(13) + Chr(10) + "Line 4" + Chr(13) + Chr(10) + "Line 5" 
d = 1 
r = 1 
z = 1 
While r > 0 
  r = FindString(Objet_Script(z), Chr(13) + Chr(10), d) 
  f = r 
  If f = 0 : f = Len(Objet_Script(z))+1 : EndIf ;(il faut rajouter + 1)
  a$= Mid(Objet_Script(z), d, f - d)    ;(f-d)car on veut une Longueur
  Debug a$
  d = f + 2 
Wend

:wink:

Publié : sam. 16/oct./2004 19:50
par Thyphoon
Merci Nico ! j'avais trouvé une autre solution mais la tienne est meilleur
voici les debuts de ma procedure

Code : Tout sélectionner

Procedure Split(pattern$,chaine$)
Dim Code$(10000)
Debut=1
Trouve=1
NbLine=-1
While Trouve > 0 
  Trouve = FindString(chaine$, pattern$, Debut) 
  Fin=Trouve
  If Fin = 0 : Fin = Len(Objet_Script(z))+1 : EndIf 
  NbLine=NbLine+1
  Code$(NbLine)= Mid(chaine$, Debut, Fin - Debut)    ;(f-d)car on veut une Longueur 
  Debut = Fin + Len(pattern$)
  Debug Code$(NbLine)
  
Wend
 ProcedureReturn Code$()
EndProcedure
parcontre je ne sais pas comment renvoyé un tableau vi ProcedureReturn ni comment le récupérer...