Split

Le
John-Pet
Bonsoir

je récupère le code source d'une page Internet
quand j'ouvre avec le bloc note ce fichier le saut de ligne ou retour
chariot est représenté par un carré, mais le fichier ne contient qu'une
ligne en faite
quand j'ouvre ce fichier par Vb et que je fait un msgbox sur ce fichier
j'ai bien toutes mes lignes dans la box.
par contre lorsque je veux traiter ce fichier pour en faire un tableau
par la fonction split(fichier.txt , vbCrLf) celui ci me renvoi qu'une
ligne aussi, il ne prend pas en compte le retour chariot et saut de
ligne

merci d'avance

JP

--
Adresse mail : john-pet@wanadoo.fr
Ceci est une signature automatique de MesNews.
Site : http://www.mesnews.net
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Jean-marc
Le #15412481
John-Pet wrote:
Bonsoir

je récupère le code source d'une page Internet
quand j'ouvre avec le bloc note ce fichier le saut de ligne ou retour
chariot est représenté par un carré, mais le fichier ne contient
qu'une ligne en faite
quand j'ouvre ce fichier par Vb et que je fait un msgbox sur ce
fichier j'ai bien toutes mes lignes dans la box.
par contre lorsque je veux traiter ce fichier pour en faire un tableau
par la fonction split(fichier.txt , vbCrLf) celui ci me renvoi qu'une
ligne aussi, il ne prend pas en compte le retour chariot et saut de
ligne

merci d'avance

JP



Le fichier que tu as récupéré est au format Unix. Dans ce format,
les passages à la ligne ne sont pas constitués de CR/LF mais
simplement de LF.

Tu peux splitter avec vbLf au lieu de vbCrlF.

Tu peux aussi mettre le contenu du fichier dans un buffer, et faire
un global replace vbLf vbCrlf; Puis tu splittes normalement
avec vbCrLf.

Et voila :-)

--
Jean-marc Noury (jean_marc_n2)
Microsoft MVP - Visual Basic
mailto: remove '_no_spam_' ;
FAQ VB: http://faq.vb.free.fr/
John-Pet
Le #15412471
Jean-marc a formulé la demande :
John-Pet wrote:
Bonsoir

je récupère le code source d'une page Internet
quand j'ouvre avec le bloc note ce fichier le saut de ligne ou retour
chariot est représenté par un carré, mais le fichier ne contient
qu'une ligne en faite
quand j'ouvre ce fichier par Vb et que je fait un msgbox sur ce
fichier j'ai bien toutes mes lignes dans la box.
par contre lorsque je veux traiter ce fichier pour en faire un tableau
par la fonction split(fichier.txt , vbCrLf) celui ci me renvoi qu'une
ligne aussi, il ne prend pas en compte le retour chariot et saut de
ligne

merci d'avance

JP



Le fichier que tu as récupéré est au format Unix. Dans ce format,
les passages à la ligne ne sont pas constitués de CR/LF mais
simplement de LF.

Tu peux splitter avec vbLf au lieu de vbCrlF.

Tu peux aussi mettre le contenu du fichier dans un buffer, et faire
un global replace vbLf vbCrlf; Puis tu splittes normalement
avec vbCrLf.

Et voila :-)



Ok merci pour les renseignements
cela fonctionne

++

JP

--
Adresse mail :
Ceci est une signature automatique de MesNews.
Site : http://www.mesnews.net
Jean-marc
Le #15412461
John-Pet wrote:
Jean-marc a formulé la demande :

Ok merci pour les renseignements
cela fonctionne



Merci du retour.

Je suis en veine d'inspiration ce soir.

Voici un splitter de fichier texte universel:


Public Function splitUniversal(ByVal fName As String, _
ByRef t() As String) As Integer
Dim buffer As String
Dim f As Integer

On Error GoTo splitUniversal_ERR

f = FreeFile
Open fName For Binary As #f
buffer = Space$(LOF(f))
Get #f, , buffer
Close #f
If InStr(buffer, vbCrLf) > 0 Then ' DOS format ?
t() = Split(buffer, vbCrLf)
ElseIf InStr(buffer, vbLf) > 0 Then ' Unix ?
t() = Split(buffer, vbCrLf)
ElseIf InStr(buffer, vbCr) > 0 Then ' VMS ?
t() = Split(buffer, vbCrLf)
Else ' NO split !
t() = Split(buffer, "")
End If

splitUniversal_END:
Exit Function
splitUniversal_ERR:
splitUniversal = Err.Number
Resume splitUniversal_END
End Function




Si ça peut vous servir, tant mieux :o)

--
Jean-marc Noury (jean_marc_n2)
Microsoft MVP - Visual Basic
mailto: remove '_no_spam_' ;
FAQ VB: http://faq.vb.free.fr/
Jacques93
Le #15412441
Bonjour Jean-marc,
Jean-marc a écrit :
John-Pet wrote:
Jean-marc a formulé la demande :

Ok merci pour les renseignements
cela fonctionne



Merci du retour.

Je suis en veine d'inspiration ce soir.

Voici un splitter de fichier texte universel:


Public Function splitUniversal(ByVal fName As String, _
ByRef t() As String) As Integer
Dim buffer As String
Dim f As Integer

On Error GoTo splitUniversal_ERR

f = FreeFile
Open fName For Binary As #f
buffer = Space$(LOF(f))
Get #f, , buffer
Close #f
If InStr(buffer, vbCrLf) > 0 Then ' DOS format ?
t() = Split(buffer, vbCrLf)
ElseIf InStr(buffer, vbLf) > 0 Then ' Unix ?
t() = Split(buffer, vbCrLf)
ElseIf InStr(buffer, vbCr) > 0 Then ' VMS ?
t() = Split(buffer, vbCrLf)
Else ' NO split !
t() = Split(buffer, "")
End If

splitUniversal_END:
Exit Function
splitUniversal_ERR:
splitUniversal = Err.Number
Resume splitUniversal_END
End Function




Si ça peut vous servir, tant mieux :o)




euh... Est ce bien normal que tu split toujours avec vbCrLf ??? et non
pas avec vbCrLf (DOS) vbLf (Unix), vbCr (VMS). Copier / Coller ?

--
Cordialement,

Jacques.
Jean-marc
Le #15412431
Jacques93 wrote:
Bonjour Jean-marc,

euh... Est ce bien normal que tu split toujours avec vbCrLf ??? et non
pas avec vbCrLf (DOS) vbLf (Unix), vbCr (VMS). Copier / Coller ?




Je ne dirais qu'un mot : Arghhhhhhhhhh !!

Merci inifiniment Jacques, je ne devrais pas copier/coller/poster après
une rude journée de travail :-(

Je rectifie donc :


Public Function splitUniversal(ByVal fName As String, _
ByRef t() As String) As Integer
Dim buffer As String
Dim f As Integer

On Error GoTo splitUniversal_ERR

f = FreeFile
Open fName For Binary As #f
buffer = Space$(LOF(f))
Get #f, , buffer
Close #f
If InStr(buffer, vbCrLf) > 0 Then ' DOS format ?
t() = Split(buffer, vbCrLf)
ElseIf InStr(buffer, vbLf) > 0 Then ' Unix ?
t() = Split(buffer, vbLf)
ElseIf InStr(buffer, vbCr) > 0 Then ' VMS ?
t() = Split(buffer, vbCr)
Else ' NO split !
t() = Split(buffer, "")
End If

splitUniversal_END:
Exit Function
splitUniversal_ERR:
splitUniversal = Err.Number
Resume splitUniversal_END
End Function


Merci encore, jacques!


--
Jean-marc Noury (jean_marc_n2)
Microsoft MVP - Visual Basic
mailto: remove '_no_spam_' ;
FAQ VB: http://faq.vb.free.fr/
Jacques93
Le #15412421
Bonjour Jean-marc,
Jean-marc a écrit :
Jacques93 wrote:
Bonjour Jean-marc,

euh... Est ce bien normal que tu split toujours avec vbCrLf ??? et non
pas avec vbCrLf (DOS) vbLf (Unix), vbCr (VMS). Copier / Coller ?




Je ne dirais qu'un mot : Arghhhhhhhhhh !!

Merci inifiniment Jacques, je ne devrais pas copier/coller/poster après
une rude journée de travail :-(




[...]

De rien, ça arrive aux meilleurs, toujours se méfier du copier/coller ;-)

--
Cordialement,

Jacques.
Publicité
Poster une réponse
Anonyme