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)
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)
Extrait de l'aide :
Dim TextLine
Open "TESTFILE" For Input As #1 ' Open file. Do While Not EOF(1) ' Loop until end of file. Line Input #1, TextLine ' Read line into variable. Debug.Print TextLine ' Print to the Immediate window. Loop Close #1 ' Close file.
-- Cordialement,
Jacques.
Bonjour SAISAS,
SAISAS a écrit :
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)
Extrait de l'aide :
Dim TextLine
Open "TESTFILE" For Input As #1 ' Open file.
Do While Not EOF(1) ' Loop until end of file.
Line Input #1, TextLine ' Read line into variable.
Debug.Print TextLine ' Print to the Immediate window.
Loop
Close #1 ' Close file.
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)
Extrait de l'aide :
Dim TextLine
Open "TESTFILE" For Input As #1 ' Open file. Do While Not EOF(1) ' Loop until end of file. Line Input #1, TextLine ' Read line into variable. Debug.Print TextLine ' Print to the Immediate window. Loop Close #1 ' Close file.
-- Cordialement,
Jacques.
SAISAS
Désolé de ne pas avoir été plus explicite ...
Je ne veux pas lire un fichier dans une variable string, mais depuis une variable vers une variable.
Voici le code équivalent avec la fonction split :
Public Sub Dire(ByRef Genie As IAgentCtlCharacter, ByVal Message As String) Dim SplitMsg As Variant Dim i As Integer
SplitMsg = Split(Message, vbCrLf, -1, vbTextCompare) For i = LBound(SplitMsg) To UBound(SplitMsg) Genie.Speak SplitMsg(i) Next i
End Sub
l'agent MS parle phrase par phrase, les phrases étant séparées par une nouvelle ligne. "Jacques93" a écrit :
Bonjour SAISAS, SAISAS a écrit : > 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) >
Extrait de l'aide :
Dim TextLine
Open "TESTFILE" For Input As #1 ' Open file. Do While Not EOF(1) ' Loop until end of file. Line Input #1, TextLine ' Read line into variable. Debug.Print TextLine ' Print to the Immediate window. Loop Close #1 ' Close file.
-- Cordialement,
Jacques.
Désolé de ne pas avoir été plus explicite ...
Je ne veux pas lire un fichier dans une variable string, mais depuis une
variable vers une variable.
Voici le code équivalent avec la fonction split :
Public Sub Dire(ByRef Genie As IAgentCtlCharacter, ByVal Message As String)
Dim SplitMsg As Variant
Dim i As Integer
SplitMsg = Split(Message, vbCrLf, -1, vbTextCompare)
For i = LBound(SplitMsg) To UBound(SplitMsg)
Genie.Speak SplitMsg(i)
Next i
End Sub
l'agent MS parle phrase par phrase, les phrases étant séparées par une
nouvelle ligne.
"Jacques93" a écrit :
Bonjour SAISAS,
SAISAS a écrit :
> 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)
>
Extrait de l'aide :
Dim TextLine
Open "TESTFILE" For Input As #1 ' Open file.
Do While Not EOF(1) ' Loop until end of file.
Line Input #1, TextLine ' Read line into variable.
Debug.Print TextLine ' Print to the Immediate window.
Loop
Close #1 ' Close file.
Je ne veux pas lire un fichier dans une variable string, mais depuis une variable vers une variable.
Voici le code équivalent avec la fonction split :
Public Sub Dire(ByRef Genie As IAgentCtlCharacter, ByVal Message As String) Dim SplitMsg As Variant Dim i As Integer
SplitMsg = Split(Message, vbCrLf, -1, vbTextCompare) For i = LBound(SplitMsg) To UBound(SplitMsg) Genie.Speak SplitMsg(i) Next i
End Sub
l'agent MS parle phrase par phrase, les phrases étant séparées par une nouvelle ligne. "Jacques93" a écrit :
Bonjour SAISAS, SAISAS a écrit : > 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) >
Extrait de l'aide :
Dim TextLine
Open "TESTFILE" For Input As #1 ' Open file. Do While Not EOF(1) ' Loop until end of file. Line Input #1, TextLine ' Read line into variable. Debug.Print TextLine ' Print to the Immediate window. Loop Close #1 ' Close file.
-- Cordialement,
Jacques.
Jacques93
Bonjour SAISAS, SAISAS a écrit :
Désolé de ne pas avoir été plus explicite ...
Je ne veux pas lire un fichier dans une variable string, mais depuis une variable vers une variable.
Voici le code équivalent avec la fonction split :
Public Sub Dire(ByRef Genie As IAgentCtlCharacter, ByVal Message As String) Dim SplitMsg As Variant Dim i As Integer
SplitMsg = Split(Message, vbCrLf, -1, vbTextCompare) For i = LBound(SplitMsg) To UBound(SplitMsg) Genie.Speak SplitMsg(i) Next i
End Sub
l'agent MS parle phrase par phrase, les phrases étant séparées par une nouvelle ligne.
Il me semble que Split est tout à fait approprié pour ce cas de figure. Que cherche tu de plus ? ou que reproche tu à Split ?
-- Cordialement,
Jacques.
Bonjour SAISAS,
SAISAS a écrit :
Désolé de ne pas avoir été plus explicite ...
Je ne veux pas lire un fichier dans une variable string, mais depuis une
variable vers une variable.
Voici le code équivalent avec la fonction split :
Public Sub Dire(ByRef Genie As IAgentCtlCharacter, ByVal Message As String)
Dim SplitMsg As Variant
Dim i As Integer
SplitMsg = Split(Message, vbCrLf, -1, vbTextCompare)
For i = LBound(SplitMsg) To UBound(SplitMsg)
Genie.Speak SplitMsg(i)
Next i
End Sub
l'agent MS parle phrase par phrase, les phrases étant séparées par une
nouvelle ligne.
Il me semble que Split est tout à fait approprié pour ce cas de figure.
Que cherche tu de plus ? ou que reproche tu à Split ?
Je ne veux pas lire un fichier dans une variable string, mais depuis une variable vers une variable.
Voici le code équivalent avec la fonction split :
Public Sub Dire(ByRef Genie As IAgentCtlCharacter, ByVal Message As String) Dim SplitMsg As Variant Dim i As Integer
SplitMsg = Split(Message, vbCrLf, -1, vbTextCompare) For i = LBound(SplitMsg) To UBound(SplitMsg) Genie.Speak SplitMsg(i) Next i
End Sub
l'agent MS parle phrase par phrase, les phrases étant séparées par une nouvelle ligne.
Il me semble que Split est tout à fait approprié pour ce cas de figure. Que cherche tu de plus ? ou que reproche tu à Split ?
-- Cordialement,
Jacques.
SAISAS
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 ...
Il semblerait néanmoins que l'option vbTextCompare traite correctement le problème.
"Jacques93" a écrit :
Bonjour SAISAS, SAISAS a écrit : > Désolé de ne pas avoir été plus explicite ... > > Je ne veux pas lire un fichier dans une variable string, mais depuis une > variable vers une variable. > > Voici le code équivalent avec la fonction split : > > Public Sub Dire(ByRef Genie As IAgentCtlCharacter, ByVal Message As String) > Dim SplitMsg As Variant > Dim i As Integer > > SplitMsg = Split(Message, vbCrLf, -1, vbTextCompare) > For i = LBound(SplitMsg) To UBound(SplitMsg) > Genie.Speak SplitMsg(i) > Next i > > End Sub > > l'agent MS parle phrase par phrase, les phrases étant séparées par une > nouvelle ligne.
Il me semble que Split est tout à fait approprié pour ce cas de figure. Que cherche tu de plus ? ou que reproche tu à Split ?
-- Cordialement,
Jacques.
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 ...
Il semblerait néanmoins que l'option vbTextCompare traite correctement le
problème.
"Jacques93" a écrit :
Bonjour SAISAS,
SAISAS a écrit :
> Désolé de ne pas avoir été plus explicite ...
>
> Je ne veux pas lire un fichier dans une variable string, mais depuis une
> variable vers une variable.
>
> Voici le code équivalent avec la fonction split :
>
> Public Sub Dire(ByRef Genie As IAgentCtlCharacter, ByVal Message As String)
> Dim SplitMsg As Variant
> Dim i As Integer
>
> SplitMsg = Split(Message, vbCrLf, -1, vbTextCompare)
> For i = LBound(SplitMsg) To UBound(SplitMsg)
> Genie.Speak SplitMsg(i)
> Next i
>
> End Sub
>
> l'agent MS parle phrase par phrase, les phrases étant séparées par une
> nouvelle ligne.
Il me semble que Split est tout à fait approprié pour ce cas de figure.
Que cherche tu de plus ? ou que reproche tu à Split ?
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 ...
Il semblerait néanmoins que l'option vbTextCompare traite correctement le problème.
"Jacques93" a écrit :
Bonjour SAISAS, SAISAS a écrit : > Désolé de ne pas avoir été plus explicite ... > > Je ne veux pas lire un fichier dans une variable string, mais depuis une > variable vers une variable. > > Voici le code équivalent avec la fonction split : > > Public Sub Dire(ByRef Genie As IAgentCtlCharacter, ByVal Message As String) > Dim SplitMsg As Variant > Dim i As Integer > > SplitMsg = Split(Message, vbCrLf, -1, vbTextCompare) > For i = LBound(SplitMsg) To UBound(SplitMsg) > Genie.Speak SplitMsg(i) > Next i > > End Sub > > l'agent MS parle phrase par phrase, les phrases étant séparées par une > nouvelle ligne.
Il me semble que Split est tout à fait approprié pour ce cas de figure. Que cherche tu de plus ? ou que reproche tu à Split ?
-- Cordialement,
Jacques.
Jacques93
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 ...
Il semblerait néanmoins que l'option vbTextCompare traite correctement le problème.
De toute façon, avec les fonctions de lecture de fichier, je pense que tu aurais rencontré le même problème, le séparateur doit être vbCrLf.
-- Cordialement,
Jacques.
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 ...
Il semblerait néanmoins que l'option vbTextCompare traite correctement le
problème.
De toute façon, avec les fonctions de lecture de fichier, je pense que
tu aurais rencontré le même problème, le séparateur doit être vbCrLf.
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 ...
Il semblerait néanmoins que l'option vbTextCompare traite correctement le problème.
De toute façon, avec les fonctions de lecture de fichier, je pense que tu aurais rencontré le même problème, le séparateur doit être vbCrLf.
-- Cordialement,
Jacques.
Jean-Marc
"SAISAS" a écrit dans le message de news:
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 ...
Hello,
Dans ce cas, tu peux normaliser ta chaine en entrée:
Dim s as string
' ici s contient des trucs, séparés par ces cr, des lf et/ou des crlf. tu fais:
-- Jean-marc Tester mon serveur (VB6) => http://myjmnhome.dyndns.org "There are only 10 kind of people those who understand binary and those who don't." mailto: remove '_no_spam_' ;
"SAISAS" <SAISAS@discussions.microsoft.com> a écrit dans le message de
news:D6FB1C5D-781A-431F-8205-392E2D60B980@microsoft.com...
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 ...
Hello,
Dans ce cas, tu peux normaliser ta chaine en entrée:
Dim s as string
' ici s contient des trucs, séparés par ces cr, des lf et/ou des
crlf. tu fais:
--
Jean-marc
Tester mon serveur (VB6) => http://myjmnhome.dyndns.org
"There are only 10 kind of people
those who understand binary and those who don't."
mailto: remove '_no_spam_' ; _no_spam_jean_marc_n2@yahoo.fr
-- Jean-marc Tester mon serveur (VB6) => http://myjmnhome.dyndns.org "There are only 10 kind of people those who understand binary and those who don't." mailto: remove '_no_spam_' ;
Tous les <CR> vont se retrouver remplacés par des <CR><CR><LF> avec ce code, non? Ou il considérera que les séquences <CR><LF> ne contiennent pas vbLf?
Tous les <CR> vont se retrouver remplacés par des <CR><CR><LF> avec ce
code, non? Ou il considérera que les séquences <CR><LF> ne contiennent
pas vbLf?
Tous les <CR> vont se retrouver remplacés par des <CR><CR><LF> avec ce code, non? Ou il considérera que les séquences <CR><LF> ne contiennent pas vbLf?
Tous les <CR> vont se retrouver remplacés par des <CR><CR><LF> avec ce code, non? Ou il considérera que les séquences <CR><LF> ne contiennent pas vbLf?
Tous les <CR> vont se retrouver remplacés par des <CR><CR><LF> avec ce
code, non? Ou il considérera que les séquences <CR><LF> ne contiennent
pas vbLf?
Tous les <CR> vont se retrouver remplacés par des <CR><CR><LF> avec ce code, non? Ou il considérera que les séquences <CR><LF> ne contiennent pas vbLf?
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
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
Jean-Marc
"Vincent Guichard" a écrit dans le message de news:4423c4b0$0$20149$
Jean-Marc a écrit : > s=replace(s, vbcr, vbcrlf) > s=replace(s, vblf, vbcrlf)
Tous les <CR> vont se retrouver remplacés par des <CR><CR><LF> avec ce code, non?
oui :-(
Ou il considérera que les séquences <CR><LF> ne contiennent
pas vbLf?
Hélas non! Tu as raison bien sur et ta séquence est la solution.
-- Jean-marc Tester mon serveur (VB6) => http://myjmnhome.dyndns.org "There are only 10 kind of people those who understand binary and those who don't." mailto: remove '_no_spam_' ;
"Vincent Guichard" <vg.bleuciel.sa@wanadoo.fr> a écrit dans le message
de news:4423c4b0$0$20149$8fcfb975@news.wanadoo.fr...
Jean-Marc a écrit :
> s=replace(s, vbcr, vbcrlf)
> s=replace(s, vblf, vbcrlf)
Tous les <CR> vont se retrouver remplacés par des <CR><CR><LF> avec ce
code, non?
oui :-(
Ou il considérera que les séquences <CR><LF> ne contiennent
pas vbLf?
Hélas non!
Tu as raison bien sur et ta séquence est la solution.
--
Jean-marc
Tester mon serveur (VB6) => http://myjmnhome.dyndns.org
"There are only 10 kind of people
those who understand binary and those who don't."
mailto: remove '_no_spam_' ; _no_spam_jean_marc_n2@yahoo.fr
"Vincent Guichard" a écrit dans le message de news:4423c4b0$0$20149$
Jean-Marc a écrit : > s=replace(s, vbcr, vbcrlf) > s=replace(s, vblf, vbcrlf)
Tous les <CR> vont se retrouver remplacés par des <CR><CR><LF> avec ce code, non?
oui :-(
Ou il considérera que les séquences <CR><LF> ne contiennent
pas vbLf?
Hélas non! Tu as raison bien sur et ta séquence est la solution.
-- Jean-marc Tester mon serveur (VB6) => http://myjmnhome.dyndns.org "There are only 10 kind of people those who understand binary and those who don't." mailto: remove '_no_spam_' ;