OVH Cloud OVH Cloud

Input et LOF

5 réponses
Avatar
Guy
je voudrais lire la totalit=E9 d'un fichier texte. J'ai=20
donc essay=E9
Open fichier For Input As #1
tout =3D Input(LOF(1), #1)
Close #1
J'ai une erreur 62 (L'entr=E9e d=E9passe la fin de fichier).
Qui peut m'expliquer pourquoi.
Merci d'avance

5 réponses

Avatar
Adam Pietrasiewicz
We wtorek 10-sierpnia-2004 o godzinie 09:20:02 Guy napisa³/a


je voudrais lire la totalité d'un fichier texte. J'ai
donc essayé
Open fichier For Input As #1
tout = Input(LOF(1), #1)
Close #1
J'ai une erreur 62 (L'entrée dépasse la fin de fichier).
Qui peut m'expliquer pourquoi.
Merci d'avance



Ce type d'erreur arrive quand le fichier contient des caracteres NON
TEXTE comme un executable ou une dll.


--
Pozdrawiam
Adam Pietrasiewicz
Avatar
le_troll
Bonjour, voici

dim taille as long
dim pointeur as long
dim variable texte as string
dim tout_le_fichier as string
'
ChDrive App.Path
ChDir App.Path
pointeur = freefile
Open "nom_fichier.txt" For Input As pointeur
if LOF(pointeur) = 0 then exit sub
tout_le_fichier = ""
Do while EOF(pointeur) <> true
Line Input #pointeur, variable_texte
tout_le_fichier = tout_le_fichier & variable_texte
Loop
close pointeur
'-----------------------------------------

Pour tes erreurs, à part si le fichier est vide, le fichier texte avec
la méthode que tu invoques (accès séquentiel), est fait pour être lu
séquentiellement, il lit chaque ligne jusqu'aux caractères ascii 13+10 <rc>+<lf> de haut en bas, tel que tu l'as ouvert...
Il es possible de mémoire d'enlever cette marque de fin de ligne "vbCrLf" en
mettant un ";" à la fin de l'enregistrement, mais normalement ce n'est pas
le but d'un fichier texte...
Si tu veux lire tout d'un coup il faut utiliser une autre méthode de lecture
"Binary", où là tu passes à une variable la longueur du fichier, puis tu
reçoit dans cette variable le fichier en entier... mais là encore ce n'est
pas trop l'usage de vider un fichier dans une variable, soit on accède aux
éléments recherchés, soit on transvase entre fichier, ou encore on affiche
en liste, et cætera.
En dernier, concernant le pointeur, dans cette méthode le "#" comme tu le
vois, est inutile et alourdit la syntaxe (LOF), in fine, il n'est pas de
bonne augure que tu donnes un nom de pointeur si peu expressif que "1", car
un pointeur peut se réutiliser loin de son fichier dans le code, et là "1"
on va se demander ce que c'est, tandis que "p", "pf", "ptr", "pointeur"
...1, 2, 3... (p1, p2, pf1, ptr1, pointeur1) on ne se demandera pas ce que
c'est...

--
Merci, @+, bye, Joe
troll75 AROBASE iFrance POINT com
------------------------------------------
Ce message est plein de virus "certifiés"
Le_Troll, éleveur de Trolls depuis César, qui disait:
Avec une hache, celui qui tient le manche a toujours raison !
------------------------------------------


"Guy" a écrit dans le message de news:
304f01c47eaa$73ffa390$
je voudrais lire la totalité d'un fichier texte. J'ai
donc essayé
Open fichier For Input As #1
tout = Input(LOF(1), #1)
Close #1
J'ai une erreur 62 (L'entrée dépasse la fin de fichier).
Qui peut m'expliquer pourquoi.
Merci d'avance
Avatar
le_troll
En complément je viens de mieux regarder, de toute façon tu l'utilises à
l'envers ton instruction, telle que tu l'as fait, c'est ta variable sensée
récupérer le fichier qui se vide dans la lecture du pointeur, or c'est le
contraire ("de gauche à droite", c'est la lecture du pointeur qui charge une
variable "fichier---> = ---> variable"...

--
Merci, @+, bye, Joe
troll75 AROBASE iFrance POINT com
------------------------------------------
Ce message est plein de virus "certifiés"
Le_Troll, éleveur de Trolls depuis César, qui disait:
Avec une hache, celui qui tient le manche a toujours raison !
------------------------------------------


"Guy" a écrit dans le message de news:
304f01c47eaa$73ffa390$
je voudrais lire la totalité d'un fichier texte. J'ai
donc essayé
Open fichier For Input As #1
tout = Input(LOF(1), #1)
Close #1
J'ai une erreur 62 (L'entrée dépasse la fin de fichier).
Qui peut m'expliquer pourquoi.
Merci d'avance
Avatar
ng
Salut,

Il est plus rapide de le lire en binaire (mm si ce n'est que du texte) :

Dim k as Integer, strBuffer As String
k = FreeFile
Open "c:fichier.txt" For Binary As #k
strBuffer = String$(LOF(k), vbNullCHar)
Get #k,,strBuffer
Close #k

Debug.Print strBuffer

--
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/



Guy a écrit :

je voudrais lire la totalité d'un fichier texte. J'ai
donc essayé
Open fichier For Input As #1
tout = Input(LOF(1), #1)
Close #1
J'ai une erreur 62 (L'entrée dépasse la fin de fichier).
Qui peut m'expliquer pourquoi.
Merci d'avance


Avatar
François Picalausa
Hello,
"Adam Pietrasiewicz" a écrit dans le message de
news:
Ce type d'erreur arrive quand le fichier contient des caracteres NON
TEXTE comme un executable ou une dll.



Juste pour compléter, il s'agit surtout du caractere EOF (ASCII &h1A - 26 -
CTRL+Z), qui est utilisé par VB lors des opérations séquentielles sur les
fichiers.

--
François Picalausa (MVP VB)
http://faq.vb.free.fr --- http://msdn.microsoft.com
http://apisvb.europe.webmatrixhosting.net