OVH Cloud OVH Cloud

Lecture de fichier ASCII.

4 réponses
Avatar
Patrick
Bonjour =E0 tous,

J'ouvre un fichier par la fonction : Open "C:\fichier"=20
For Binary As #1.
Celui-ci qui contient plusieurs ligne dont une de plus de=20
9000 caract=E8res. Je rempli une variable du contenu de=20
cette ligne avec la fonction : Line Input #NumFichier,=20
TextLine. Lorsque je mesure la longueur de cette variable=20
il manque plein de caract=E8res. Dans un =E9diteur de text=20
ils apparaissent comme des carr=E9s.
pourquoi ont ils disparus?

Merci de votre aide

Cordialement

Patrick.

4 réponses

Avatar
ng
Salut,

Pour lire un gros fichier ligne par ligne, je te conseille plutot ceci
(c'est bien plus rapide !) :

Dim k as integer,strBuff as string,tblLignes() as string
dim i as integer
k=freefile
open "C:fichier" for binary as #k
strBuff=String$(lof(k),vbNullChar)
get #k,,strBuff
close #k
tblLignes=split(strBuff,vbcrlf, ,vbTextCompare):strBuff=""
For i=0 to ubound(tblLignes)
MsgBox tblLignes(i)
Next
Erase tblLignes

En outre je ne pense pas que tes caractères aient disparus mais plutot que
ta chaine contienne des Chr$(0), ce qui la tronque donc prématurement. Pour
les afficher, il faudra les remplacer par un autre caractère.

--
Nicolas G.
FAQ VB : http://faq.vb.free.fr
API Guide : http://www.allapi.net
Google Groups : http://groups.google.fr/
MZ-Tools : http://www.mztools.com/
http://apisvb.europe.webmatrixhosting.net/

Patrick a écrit :

Bonjour à tous,

J'ouvre un fichier par la fonction : Open "C:fichier"
For Binary As #1.
Celui-ci qui contient plusieurs ligne dont une de plus de
9000 caractères. Je rempli une variable du contenu de
cette ligne avec la fonction : Line Input #NumFichier,
TextLine. Lorsque je mesure la longueur de cette variable
il manque plein de caractères. Dans un éditeur de text
ils apparaissent comme des carrés.
pourquoi ont ils disparus?

Merci de votre aide

Cordialement

Patrick.


Avatar
Merci, effectivement, comme ça, ça fonctionne bien mais
je ne comprend pas pourquoi le Input Line suprime des
caractères.
Merci encore et @+
-----Message d'origine-----
Salut,

Pour lire un gros fichier ligne par ligne, je te


conseille plutot ceci
(c'est bien plus rapide !) :

Dim k as integer,strBuff as string,tblLignes() as string
dim i as integer
k=freefile
open "C:fichier" for binary as #k
strBuff=String$(lof(k),vbNullChar)
get #k,,strBuff
close #k
tblLignes=split


(strBuff,vbcrlf, ,vbTextCompare):strBuff=""
For i=0 to ubound(tblLignes)
MsgBox tblLignes(i)
Next
Erase tblLignes

En outre je ne pense pas que tes caractères aient


disparus mais plutot que
ta chaine contienne des Chr$(0), ce qui la tronque donc


prématurement. Pour
les afficher, il faudra les remplacer par un autre


caractère.

--
Nicolas G.
FAQ VB : http://faq.vb.free.fr
API Guide : http://www.allapi.net
Google Groups : http://groups.google.fr/
MZ-Tools : http://www.mztools.com/
http://apisvb.europe.webmatrixhosting.net/

Patrick a écrit :

Bonjour à tous,

J'ouvre un fichier par la fonction : Open "C:fichier"
For Binary As #1.
Celui-ci qui contient plusieurs ligne dont une de plus




de
9000 caractères. Je rempli une variable du contenu de
cette ligne avec la fonction : Line Input #NumFichier,
TextLine. Lorsque je mesure la longueur de cette




variable
il manque plein de caractères. Dans un éditeur de text
ils apparaissent comme des carrés.
pourquoi ont ils disparus?

Merci de votre aide

Cordialement

Patrick.




.



Avatar
ng
Salut,

Peut être à cause des Chr$(0) ou des Chr$(13) sans Chr$(10). Mais il faut
voir le type de ton fichier (contenu) et ton code.

--
Nicolas G.
FAQ VB : http://faq.vb.free.fr
API Guide : http://www.allapi.net
Google Groups : http://groups.google.fr/
MZ-Tools : http://www.mztools.com/
http://apisvb.europe.webmatrixhosting.net/

a
écrit :

Merci, effectivement, comme ça, ça fonctionne bien mais
je ne comprend pas pourquoi le Input Line suprime des
caractères.
Merci encore et @+
-----Message d'origine-----
Salut,

Pour lire un gros fichier ligne par ligne, je te conseille plutot
ceci (c'est bien plus rapide !) :

Dim k as integer,strBuff as string,tblLignes() as string
dim i as integer
k=freefile
open "C:fichier" for binary as #k
strBuff=String$(lof(k),vbNullChar)
get #k,,strBuff
close #k
tblLignes=split


(strBuff,vbcrlf, ,vbTextCompare):strBuff=""
For i=0 to ubound(tblLignes)
MsgBox tblLignes(i)
Next
Erase tblLignes

En outre je ne pense pas que tes caractères aient disparus mais
plutot que ta chaine contienne des Chr$(0), ce qui la tronque donc
prématurement. Pour les afficher, il faudra les remplacer par un
autre caractère.

--
Nicolas G.
FAQ VB : http://faq.vb.free.fr
API Guide : http://www.allapi.net
Google Groups : http://groups.google.fr/
MZ-Tools : http://www.mztools.com/
http://apisvb.europe.webmatrixhosting.net/

Patrick a écrit :

Bonjour à tous,

J'ouvre un fichier par la fonction : Open "C:fichier"
For Binary As #1.
Celui-ci qui contient plusieurs ligne dont une de plus de
9000 caractères. Je rempli une variable du contenu de
cette ligne avec la fonction : Line Input #NumFichier,
TextLine. Lorsque je mesure la longueur de cette variable
il manque plein de caractères. Dans un éditeur de text
ils apparaissent comme des carrés.
pourquoi ont ils disparus?

Merci de votre aide

Cordialement

Patrick.




.




Avatar
Clive Lumb
a écrit dans le message de
news:219101c4279c$453b1d60$
Merci, effectivement, comme ça, ça fonctionne bien mais
je ne comprend pas pourquoi le Input Line suprime des
caractères.
Je crois que c'est parce que tu l'ouvres en "Binary"
Refais l'essai avec an Open Tartampion for Input as nn
CLive