Split

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
Avatar de l’utilisateur
Thyphoon
Messages : 2706
Inscription : mer. 25/août/2004 6:31
Localisation : Eragny
Contact :

Split

Message 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
nico
Messages : 3702
Inscription : ven. 13/févr./2004 0:57

Message 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:
Avatar de l’utilisateur
Thyphoon
Messages : 2706
Inscription : mer. 25/août/2004 6:31
Localisation : Eragny
Contact :

Message 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...
Répondre