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

aurelien2723 181 Messages postés jeudi 12 janvier 2006Date d'inscription 26 janvier 2011 Dernière intervention - 10 mai 2006 à 09:51 - Dernière réponse : aurelien2723 181 Messages postés jeudi 12 janvier 2006Date d'inscription 26 janvier 2011 Dernière intervention
- 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

aurelien2723 181 Messages postés jeudi 12 janvier 2006Date d'inscription 26 janvier 2011 Dernière intervention - 6 juin 2006 à 10:34
+3
Utile
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
@+
Cette réponse vous a-t-elle aidé ?  
Polack77 1100 Messages postés mercredi 22 mars 2006Date d'inscription 15 avril 2018 Dernière intervention - 10 mai 2006 à 10:16
0
Utile
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
aurelien2723 181 Messages postés jeudi 12 janvier 2006Date d'inscription 26 janvier 2011 Dernière intervention - 10 mai 2006 à 11:36
0
Utile
J'ai testé en passant par une variable temporaire, le chemin du fichier est correct... :(

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

Peut-etre parceque je ferme mal??
Polack77 1100 Messages postés mercredi 22 mars 2006Date d'inscription 15 avril 2018 Dernière intervention - 10 mai 2006 à 13:29
0
Utile
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
aurelien2723 181 Messages postés jeudi 12 janvier 2006Date d'inscription 26 janvier 2011 Dernière intervention - 10 mai 2006 à 14:40
0
Utile
oui c'est ce que je fais, le problème est que le message d'erreur est avant le close
Polack77 1100 Messages postés mercredi 22 mars 2006Date d'inscription 15 avril 2018 Dernière intervention - 10 mai 2006 à 14:57
0
Utile
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
Polack77 1100 Messages postés mercredi 22 mars 2006Date d'inscription 15 avril 2018 Dernière intervention - 10 mai 2006 à 14:58
0
Utile
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
Polack77 1100 Messages postés mercredi 22 mars 2006Date d'inscription 15 avril 2018 Dernière intervention - 10 mai 2006 à 15:00
0
Utile
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
Polack77 1100 Messages postés mercredi 22 mars 2006Date d'inscription 15 avril 2018 Dernière intervention - 10 mai 2006 à 15:16
0
Utile
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
Polack77 1100 Messages postés mercredi 22 mars 2006Date d'inscription 15 avril 2018 Dernière intervention - 10 mai 2006 à 16:17
0
Utile
Alors ça marche?

D'oh! Nuts!
Mmmmm...
DONUTS
Gobillot 3140 Messages postés vendredi 14 mai 2004Date d'inscription 31 mars 2015 Dernière intervention - 11 mai 2006 à 00:40
0
Utile
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
aurelien2723 181 Messages postés jeudi 12 janvier 2006Date d'inscription 26 janvier 2011 Dernière intervention - 11 mai 2006 à 11:10
0
Utile
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...
aurelien2723 181 Messages postés jeudi 12 janvier 2006Date d'inscription 26 janvier 2011 Dernière intervention - 11 mai 2006 à 11:36
0
Utile
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 :(
Polack77 1100 Messages postés mercredi 22 mars 2006Date d'inscription 15 avril 2018 Dernière intervention - 11 mai 2006 à 11:41
0
Utile
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
Gobillot 3140 Messages postés vendredi 14 mai 2004Date d'inscription 31 mars 2015 Dernière intervention - 11 mai 2006 à 11:45
0
Utile
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
Polack77 1100 Messages postés mercredi 22 mars 2006Date d'inscription 15 avril 2018 Dernière intervention - 11 mai 2006 à 11:52
0
Utile
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
Gobillot 3140 Messages postés vendredi 14 mai 2004Date d'inscription 31 mars 2015 Dernière intervention - 11 mai 2006 à 11:59
0
Utile
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
aurelien2723 181 Messages postés jeudi 12 janvier 2006Date d'inscription 26 janvier 2011 Dernière intervention - 11 mai 2006 à 12:02
0
Utile
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.