Je ne me souviens plus comment on lit une chaine de caractères comme si
c'était un fichier streeam (c'est à dire, que l'on récupère explicitement
chaque ligne).
Si j'ai révé, j'essaierai la fonction split (texte, vbCrLf)
SAISAS a écrit : > Je reproche à mon code de ne pas gérer correctement les différentes
formes de
> passage à la ligne. Dans la majorité des cas, le code inséré est vbCrLf,
mais
> de temps en temps, et sans que j'en connaisse la logique, on retrouve
vbCr
> tout seul, ou vbLf tout seul ...
Bonjour,
Il me semble avoir rencontré ce problème un jour. Il y a deux explications possibles : ou une chaîne provenant d'un programme pas très bien écrit de ce point de vue, ou un fichier provenant d'une autre plate-forme.
Je crois bien que je m'en étais sorti avec une routine de rectification, un peu dans ce style-là (je dis ça de tête, il faudrait tester) :
'j'ai été tenté de mettre strTest plutôt que Test, mais ça faisait 'des lignes trop longues pour les newsgroups.
booTest = True While booTest booTest = False For N = 1 to Len(Test) - 1 If Mid$(Test, N, 1) = vbCr And Mid$(Test, N + 1, 1) <> vbLf Then Temp = Left$(Test, N) + vbLf + Mid$(Test, N + 1) Test = Temp booTest = True End If Next For N = 2 to Len(Test) If Mid$(Test, N - 1, 1) <> vbCr And Mid$(Test, N, 1) = vbLf Then Temp = Left$(Test, N - 1) + vbCr + Mid$(Test, N) Test = temp booTest = True End If Next Wend
ou peut être la fonction replace
"Gloops" <gloops@niark.invalid> a écrit dans le message de
news:%23TokQC1TGHA.5496@TK2MSFTNGP11.phx.gbl...
SAISAS a écrit :
> Je reproche à mon code de ne pas gérer correctement les différentes
formes de
> passage à la ligne. Dans la majorité des cas, le code inséré est vbCrLf,
mais
> de temps en temps, et sans que j'en connaisse la logique, on retrouve
vbCr
> tout seul, ou vbLf tout seul ...
Bonjour,
Il me semble avoir rencontré ce problème un jour.
Il y a deux explications possibles : ou une chaîne provenant d'un
programme pas très bien écrit de ce point de vue, ou un fichier
provenant d'une autre plate-forme.
Je crois bien que je m'en étais sorti avec une routine de rectification,
un peu dans ce style-là (je dis ça de tête, il faudrait tester) :
'j'ai été tenté de mettre strTest plutôt que Test, mais ça faisait
'des lignes trop longues pour les newsgroups.
booTest = True
While booTest
booTest = False
For N = 1 to Len(Test) - 1
If Mid$(Test, N, 1) = vbCr And Mid$(Test, N + 1, 1) <> vbLf Then
Temp = Left$(Test, N) + vbLf + Mid$(Test, N + 1)
Test = Temp
booTest = True
End If
Next
For N = 2 to Len(Test)
If Mid$(Test, N - 1, 1) <> vbCr And Mid$(Test, N, 1) = vbLf Then
Temp = Left$(Test, N - 1) + vbCr + Mid$(Test, N)
Test = temp
booTest = True
End If
Next
Wend
SAISAS a écrit : > Je reproche à mon code de ne pas gérer correctement les différentes
formes de
> passage à la ligne. Dans la majorité des cas, le code inséré est vbCrLf,
mais
> de temps en temps, et sans que j'en connaisse la logique, on retrouve
vbCr
> tout seul, ou vbLf tout seul ...
Bonjour,
Il me semble avoir rencontré ce problème un jour. Il y a deux explications possibles : ou une chaîne provenant d'un programme pas très bien écrit de ce point de vue, ou un fichier provenant d'une autre plate-forme.
Je crois bien que je m'en étais sorti avec une routine de rectification, un peu dans ce style-là (je dis ça de tête, il faudrait tester) :
'j'ai été tenté de mettre strTest plutôt que Test, mais ça faisait 'des lignes trop longues pour les newsgroups.
booTest = True While booTest booTest = False For N = 1 to Len(Test) - 1 If Mid$(Test, N, 1) = vbCr And Mid$(Test, N + 1, 1) <> vbLf Then Temp = Left$(Test, N) + vbLf + Mid$(Test, N + 1) Test = Temp booTest = True End If Next For N = 2 to Len(Test) If Mid$(Test, N - 1, 1) <> vbCr And Mid$(Test, N, 1) = vbLf Then Temp = Left$(Test, N - 1) + vbCr + Mid$(Test, N) Test = temp booTest = True End If Next Wend
SAISAS
Merci à tous ...
PS : en fait, mon problème était sur des zones de texte (textbox et richtextbox) qui semblaient réagir un peu spécialement sur la saisie Entrée et sur la saisie ctrl+Entrée.
"Driss HANIB" a écrit :
ou peut être la fonction replace
"Gloops" a écrit dans le message de news:% > SAISAS a écrit : > > Je reproche à mon code de ne pas gérer correctement les différentes formes de > > passage à la ligne. Dans la majorité des cas, le code inséré est vbCrLf, mais > > de temps en temps, et sans que j'en connaisse la logique, on retrouve vbCr > > tout seul, ou vbLf tout seul ... > > Bonjour, > > Il me semble avoir rencontré ce problème un jour. > Il y a deux explications possibles : ou une chaîne provenant d'un > programme pas très bien écrit de ce point de vue, ou un fichier > provenant d'une autre plate-forme. > > Je crois bien que je m'en étais sorti avec une routine de rectification, > un peu dans ce style-là (je dis ça de tête, il faudrait tester) : > > 'j'ai été tenté de mettre strTest plutôt que Test, mais ça faisait > 'des lignes trop longues pour les newsgroups. > > booTest = True > While booTest > booTest = False > For N = 1 to Len(Test) - 1 > If Mid$(Test, N, 1) = vbCr And Mid$(Test, N + 1, 1) <> vbLf Then > Temp = Left$(Test, N) + vbLf + Mid$(Test, N + 1) > Test = Temp > booTest = True > End If > Next > For N = 2 to Len(Test) > If Mid$(Test, N - 1, 1) <> vbCr And Mid$(Test, N, 1) = vbLf Then > Temp = Left$(Test, N - 1) + vbCr + Mid$(Test, N) > Test = temp > booTest = True > End If > Next > Wend
Merci à tous ...
PS : en fait, mon problème était sur des zones de texte (textbox et
richtextbox) qui semblaient réagir un peu spécialement sur la saisie Entrée
et sur la saisie ctrl+Entrée.
"Driss HANIB" a écrit :
ou peut être la fonction replace
"Gloops" <gloops@niark.invalid> a écrit dans le message de
news:%23TokQC1TGHA.5496@TK2MSFTNGP11.phx.gbl...
> SAISAS a écrit :
> > Je reproche à mon code de ne pas gérer correctement les différentes
formes de
> > passage à la ligne. Dans la majorité des cas, le code inséré est vbCrLf,
mais
> > de temps en temps, et sans que j'en connaisse la logique, on retrouve
vbCr
> > tout seul, ou vbLf tout seul ...
>
> Bonjour,
>
> Il me semble avoir rencontré ce problème un jour.
> Il y a deux explications possibles : ou une chaîne provenant d'un
> programme pas très bien écrit de ce point de vue, ou un fichier
> provenant d'une autre plate-forme.
>
> Je crois bien que je m'en étais sorti avec une routine de rectification,
> un peu dans ce style-là (je dis ça de tête, il faudrait tester) :
>
> 'j'ai été tenté de mettre strTest plutôt que Test, mais ça faisait
> 'des lignes trop longues pour les newsgroups.
>
> booTest = True
> While booTest
> booTest = False
> For N = 1 to Len(Test) - 1
> If Mid$(Test, N, 1) = vbCr And Mid$(Test, N + 1, 1) <> vbLf Then
> Temp = Left$(Test, N) + vbLf + Mid$(Test, N + 1)
> Test = Temp
> booTest = True
> End If
> Next
> For N = 2 to Len(Test)
> If Mid$(Test, N - 1, 1) <> vbCr And Mid$(Test, N, 1) = vbLf Then
> Temp = Left$(Test, N - 1) + vbCr + Mid$(Test, N)
> Test = temp
> booTest = True
> End If
> Next
> Wend
PS : en fait, mon problème était sur des zones de texte (textbox et richtextbox) qui semblaient réagir un peu spécialement sur la saisie Entrée et sur la saisie ctrl+Entrée.
"Driss HANIB" a écrit :
ou peut être la fonction replace
"Gloops" a écrit dans le message de news:% > SAISAS a écrit : > > Je reproche à mon code de ne pas gérer correctement les différentes formes de > > passage à la ligne. Dans la majorité des cas, le code inséré est vbCrLf, mais > > de temps en temps, et sans que j'en connaisse la logique, on retrouve vbCr > > tout seul, ou vbLf tout seul ... > > Bonjour, > > Il me semble avoir rencontré ce problème un jour. > Il y a deux explications possibles : ou une chaîne provenant d'un > programme pas très bien écrit de ce point de vue, ou un fichier > provenant d'une autre plate-forme. > > Je crois bien que je m'en étais sorti avec une routine de rectification, > un peu dans ce style-là (je dis ça de tête, il faudrait tester) : > > 'j'ai été tenté de mettre strTest plutôt que Test, mais ça faisait > 'des lignes trop longues pour les newsgroups. > > booTest = True > While booTest > booTest = False > For N = 1 to Len(Test) - 1 > If Mid$(Test, N, 1) = vbCr And Mid$(Test, N + 1, 1) <> vbLf Then > Temp = Left$(Test, N) + vbLf + Mid$(Test, N + 1) > Test = Temp > booTest = True > End If > Next > For N = 2 to Len(Test) > If Mid$(Test, N - 1, 1) <> vbCr And Mid$(Test, N, 1) = vbLf Then > Temp = Left$(Test, N - 1) + vbCr + Mid$(Test, N) > Test = temp > booTest = True > End If > Next > Wend