[VB6]Problème fichier [Résolu]

Messages postés
181
Date d'inscription
jeudi 12 janvier 2006
Dernière intervention
26 janvier 2011
- - Dernière réponse : aurelien2723
Messages postés
181
Date d'inscription
jeudi 12 janvier 2006
Dernière intervention
26 janvier 2011
- 6 juin 2006 à 10:34
Salut!!

Je fais un petit programme en VB6.

J'ai une erreur de compilation incompréhensible....
Surtout que j'utilises exactement le même code dans un autre projet....

Alors voici le bout de code :

' on ouvre le fichier en texte pour corriger les bugs d'Excel
fluxTmp = FreeFile()
Open LireINI("BR7", "PathOut") + "BR7.txt" For Input As #fluxTmp
texte = Input(LOF(fluxTmp), fluxTmp)
Close fluxTmp
texte = Replace(texte, Chr(34) + Chr(34) + Chr(34), Chr(34))

J'ai une erreur sur texte = Input(LOF(fluxTmp), fluxTmp) qui me dit :
Erreur 68 :
L'entrée dépasse la fin de fichier

Sachant que la fonction LireINI est ok puisqu'utilisé avant dans le code correctement

Si quelqu'un peut m'aider svp

Merci bien :)
Afficher la suite 

19 réponses

Meilleure réponse
Messages postés
181
Date d'inscription
jeudi 12 janvier 2006
Dernière intervention
26 janvier 2011
3
Merci
Salut!

J'avais toujours ce problème. Je viens de me rendre compte que les fichiers texte n'étaient identiqes qu'en apparance en fait. En les ouvrant avec un éditeur de texte, celui qui créé le bug était différent, et donc avait certainement un caractère 1A ou autre qui faisait bugger....
Un gros c'était un bug de boulet....

désolé.
Merci beaucoup pour l'aide
@+

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources a aidé 98 internautes ce mois-ci

Messages postés
1100
Date d'inscription
mercredi 22 mars 2006
Dernière intervention
15 avril 2018
0
Merci
Heeeeeee, le fichier que tu lit n'est pas vide par hasard? Oui je sais c une question béte mais une erreur est si vite venu. Si non je ne vois pas de problème dans ton bout de code. Verifi ce que te renvoie ta fonction LireINI(...), des fois que le fichier pointer n'est pas celui que tu crois.

D'oh! Nuts!
Mmmmm...
DONUTS
Messages postés
181
Date d'inscription
jeudi 12 janvier 2006
Dernière intervention
26 janvier 2011
0
Merci
J'ai testé en passant par une variable temporaire, le chemin du fichier est correct... :(

Help me please
Messages postés
181
Date d'inscription
jeudi 12 janvier 2006
Dernière intervention
26 janvier 2011
0
Merci
Enfait j'ai testé avec mon autre fichier texte, et la pas de soucis....

Peut-etre parceque je ferme mal??
Messages postés
1100
Date d'inscription
mercredi 22 mars 2006
Dernière intervention
15 avril 2018
0
Merci
Ba, à chaque open #x il faut un close #x (moi je ferme les fichiers dé que j'ai fini de travailer dessus, quite à le ré-ouvrir plus loin)

D'oh! Nuts!
Mmmmm...
DONUTS
Messages postés
181
Date d'inscription
jeudi 12 janvier 2006
Dernière intervention
26 janvier 2011
0
Merci
oui c'est ce que je fais, le problème est que le message d'erreur est avant le close
Messages postés
1100
Date d'inscription
mercredi 22 mars 2006
Dernière intervention
15 avril 2018
0
Merci
extrait de l'aide de VB :
--------------------------------
Important En mode Binary, Input et
Random, vous n'êtes pas obligé de fermer un fichier avant de l'ouvrir
sous un autre numéro de fichier. En mode Append et Output, vous
devez fermer un fichier avant de l'ouvrir sous un autre numéro de fichier.
--------------------------
tu ouvre dans ta fonction en "Input" donc pas de souci pour l'ouvrir plusieur fois (a moin qu'il soit ouvert en Output ou Append avant, peut être même que tu aura un problème si tu cherche à ouvrir en Output et que il est déja ouvert en Input????)

Essais avec un fichier plus petit (le fichier est peut être trop gros pour tenir dans une seul variable)

LOF renvoi la taille du fichier (en carac? moi j'ai déja eu des problèmes avec les retour à la ligne "chr(13) & chr(10)" reconu comme un carac ou deux carac suivant les fonctions, peut être que????)
au lieu de "texte = Input(LOF(fluxTmp), fluxTmp)" test :
-------------------
dim Temp as string
text = ""
do while EOF(fluxTmp)
line input #fluxTmp, temp
test = test & temp & chr(13) & chr(10) 'verif si chr(10) est nesesaire (je le pense)
loop
--------------------

D'oh! Nuts!
Mmmmm...
DONUTS
Messages postés
1100
Date d'inscription
mercredi 22 mars 2006
Dernière intervention
15 avril 2018
0
Merci
Je pense que c'est LOF qui posse problème car ton erreur est "L'entrée dépasse la fin de fichier"

D'oh! Nuts!
Mmmmm...
DONUTS
Messages postés
1100
Date d'inscription
mercredi 22 mars 2006
Dernière intervention
15 avril 2018
0
Merci
Heeeeeee perdon j'ai valider sans avoir fini.


Je pense que c'est LOF qui posse problème car ton erreur est "L'entrée dépasse la fin de fichier" donc c'est que tu cherche à lire plus loin que la fin du fichier.

Pense à valider la(les) rèponce(s) qui t'on permis de résoudre ton problème.

D'oh! Nuts!
Mmmmm...
DONUTS
Messages postés
1100
Date d'inscription
mercredi 22 mars 2006
Dernière intervention
15 avril 2018
0
Merci
je crois que je suis fatigué. Plein de faute dans le bout de code plus haut
-------------------
dim Temp as string
texte = ""

do while EOF(fluxTmp)
line input #fluxTmp, temp
texte
= texte
& temp & chr(13) & chr(10) 'verif si chr(10) est nesesaire (je le pense)
loop
--------------------

D'oh! Nuts!
Mmmmm...
DONUTS
Messages postés
1100
Date d'inscription
mercredi 22 mars 2006
Dernière intervention
15 avril 2018
0
Merci
Alors ça marche?

D'oh! Nuts!
Mmmmm...
DONUTS
Messages postés
3140
Date d'inscription
vendredi 14 mai 2004
Dernière intervention
31 mars 2015
0
Merci
Salut,



Tu lis certainement un fichier binaire, qui contient un caractère de fin chr$(26)
donc impossible de le lire en Input

tu dois le lire en binary


Daniel
Messages postés
181
Date d'inscription
jeudi 12 janvier 2006
Dernière intervention
26 janvier 2011
0
Merci
Salut!

J'ai testé ton code Polack77 , la variable temp est vide ... (je la remet dans le fichier après et celui ci est vide)
Le fichier n'est pas binaire, il est enregistrer en txt avec Excel dans le même programme.

J'ai le même code a coté qui lui marche... Avec un fichier plus gros...
Messages postés
181
Date d'inscription
jeudi 12 janvier 2006
Dernière intervention
26 janvier 2011
0
Merci
Y'avais une tite erreur dans ton code

do while EOF(fluxTmp) = false

Je me retrouve avec un fichier qui a 19ko de caractère identiques après

' on referme et sauvegarde le fichier avec les modifications
Open LireINI("BR7", "PathOut") + "BR7.txt" For Output As #fluxTmp
Print #fluxTmp, texte
Close fluxTmp


merci pour votre aide :)

ca marche toujours pas :(
Messages postés
1100
Date d'inscription
mercredi 22 mars 2006
Dernière intervention
15 avril 2018
0
Merci
Oui désol on contigue temps que le fichier n'est pas terminer!!!!

"ca marche toujours pas :(" ?????????????????????????????????
Ques qui marche pas si arive à lire ton fichier????????????

D'oh! Nuts!
Mmmmm...
DONUTS
Messages postés
3140
Date d'inscription
vendredi 14 mai 2004
Dernière intervention
31 mars 2015
0
Merci
je maintiens, la seule façon d'avoir ce message, c'est d'avoir le caractère 1A dans le fichier,

c'est pas une question de taille de fichier.

il suffit de chercher avec un éditeur hexa.

Daniel
Messages postés
1100
Date d'inscription
mercredi 22 mars 2006
Dernière intervention
15 avril 2018
0
Merci
Daniel tu veut dire que en ouvrant simplement le ficheir avec :
open "Machin.ext" for binary access right as #x
on poura le lire (avec Input(number, [#]filenumber))
C'est ca???
Peut tu me dire quel est la differance entre un fichier séquentiel et binaire meric

D'oh! Nuts!
Mmmmm...
DONUTS
Messages postés
3140
Date d'inscription
vendredi 14 mai 2004
Dernière intervention
31 mars 2015
0
Merci
non pas avec input mais avec Get

ça passera à tous les coups, quelque soit les caractères du fichier:



Dim Buffer As String



Open Nomfichier For Binary As #1

Buffer = Space$(Lof(1))

Get #1, , Buffer

Close #1


Daniel
Messages postés
181
Date d'inscription
jeudi 12 janvier 2006
Dernière intervention
26 janvier 2011
0
Merci
Ca marche lorsque je met binary ( pas besoin de la boucle de Polack77)

Merci bien :)

Par contre, j'ouvre le fichier pour faire un Replace, qui la, ne fonctionne pas :
fluxTmp = FreeFile()
Open LireINI("BR7", "PathOut") + "BR7.txt" For Binary As #fluxTmp
texte = Input(LOF(fluxTmp), fluxTmp)
Close fluxTmp

texte = Replace(texte, Chr(34) + Chr(34) + Chr(34), Chr(34))

' on referme et sauvegarde le fichier avec les modifications
Open LireINI("BR7", "PathOut") + "BR7.txt" For Output As #fluxTmp
Print #fluxTmp, texte
Close fluxTmp

Merci bien :)

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.