Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1789 connectés 

  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  Pb avec EOF dans boucle

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Pb avec EOF dans boucle

n°1287930
erwan83
Du Shift DEL tu te méfieras !
Posté le 19-01-2006 à 21:38:06  profilanswer
 

Bonjour
voia le bout de code qui pose probleme :
 

Citation :

   Close #1, #2, #3
 
    Open "c:/bateau.txt" For Output As #1
    Open "c:/ttt.txt" For Input As #2
   While Not EOF(2) = True
    Input #2, truc
    Print #1, truc;
    Print #1, " ";
    Wend:
Close #1, #2, #3
 
On Error GoTo erreurboucle:
    Open "c:/bateau.txt" For Input As #1
    Open "c:/ttt.txt" For Output As 2
   While Not EOF(1) = True
   Input #1, truc
   Print #2, truc;
    Wend:
erreurboucle:
Close #1, #2, #3


 
Je coince souvent mais pas tout le temps sur la ligne en gras : VB me dit fin de fichier, erreur
 
Question : comment placer mon ON ERROR ou comment faire une boucle qui passe ?
 
Merci


---------------
http://www.ypikay.com
mood
Publicité
Posté le 19-01-2006 à 21:38:06  profilanswer
 

n°1288051
ziold
L'original...
Posté le 20-01-2006 à 08:51:43  profilanswer
 

Il manque un "#" devant le 2 du open de ta boucle On Error...
Peut être ce n'est que ça...


---------------
Le savoir est une des rares choses qui augmente quand on le partage, n'hésitons pas !
n°1288225
erwan83
Du Shift DEL tu te méfieras !
Posté le 20-01-2006 à 12:08:32  profilanswer
 

oui le # est enlevé par VB mais non c'est pas ça, il me marque l'erreur une fois de temps en temps...
Sinon la syntaxe, on est d'accord, elle est correcte ?
Le soucis c'est que le ON ERROR ne marche pas et ça me fait perdre des heures de traitement à chaque fois...
à part wend et on error, que pourraisd je utiliser pour parer à ce plantage ?


---------------
http://www.ypikay.com
n°1288456
ladislas26​09
Posté le 20-01-2006 à 17:07:48  profilanswer
 

Salut,  
 
essaye d'enlever les deux points (:) après le on error.
ensuite retire le "=true" après while not eof(1)
 
ensuite, as tu défini truc quelque part ? ex truc = str(15)
L'erreur ne viendrait pas du fait que la longueur restant dans le fichier est inférieure à la longueur que tu essaye de lire
 
essaye de rajouter ça à la fin de ta boucle
 
if (lof(1)-loc(1)<len(truc) then
truc = str(lof(1)-loc(1))
end if
 
ce qui te permet d'attribuer à la taille du buffer la longueur restant dans le fichier.
 
sinon, charge la totalité du fichier dans le buffer. Normalement ça pose pas de problème car tu peut mettre quasiment 1Go dans un buffer
 
dim buffer as string
buffer = lof(1)
input #1,buffer
 
 
@+++

n°1288466
ladislas26​09
Posté le 20-01-2006 à 17:13:06  profilanswer
 

oulà buffer = str(lof(1)).
 
Fatigué moa

n°1288534
erwan83
Du Shift DEL tu te méfieras !
Posté le 20-01-2006 à 18:26:35  profilanswer
 

ladislas2609 a écrit :

Salut,  
 
essaye d'enlever les deux points (:) après le on error.
ensuite retire le "=true" après while not eof(1)
 
ensuite, as tu défini truc quelque part ? ex truc = str(15)
L'erreur ne viendrait pas du fait que la longueur restant dans le fichier est inférieure à la longueur que tu essaye de lire
 
essaye de rajouter ça à la fin de ta boucle
 
if (lof(1)-loc(1)<len(truc) then
truc = str(lof(1)-loc(1))
end if
 
ce qui te permet d'attribuer à la taille du buffer la longueur restant dans le fichier.
 
sinon, charge la totalité du fichier dans le buffer. Normalement ça pose pas de problème car tu peut mettre quasiment 1Go dans un buffer
 
dim buffer as string
buffer = lof(1)
input #1,buffer
 
 
@+++


 
j'ai posé un compteur à l'intérieur de la boucle mais je crois que ca se produit quand le premier fichier lu est vide...
pour le moment j'attends qu'il plante pour lire le compteur...


---------------
http://www.ypikay.com
n°1288631
Carbon_14
Posté le 20-01-2006 à 21:02:22  profilanswer
 

truc est défini comment ?  
C'est quel type de variable ? Une chaîne, un integer, ?? ?
 
S'il bloque sur le ligne en gras, c'est que le test eof() n'est pas FALSE sinon, passerait.
Rq : if not a = B then, on sait pas trop quoi lire, if (not (a = B)) then est plus sûr. Voire if (a <> B) then.
 
Les trucs à lire, ce sont des nombres, bouts de texte ? Line input est peut-être plus "flexible", mais si ce sont des nombres à lire, ça complique (faut découper, line input lit toute la ligne en bloc)

n°1288637
erwan83
Du Shift DEL tu te méfieras !
Posté le 20-01-2006 à 21:10:50  profilanswer
 

Ah... j'ai trouvé. ça y est il a planté...
si il ne commence qu'une boucle dans le premier fichier c'est que ce fichier est vide:
premiere boucle - j'incremente mon compteur (ici xyza) de 0 à 1
valeur de compteur =1
or je colle le compteur avant qu'il tente de lire le fichier.
 
quand il attaque l'écriture du deuxieme fichier,
si le compteur xyza = 1 alors je le sors de la boucle...
ce qui donne :
 

Citation :

   Open "c:/bateau.txt" For Output As #1
    Open "c:/ttt.txt" For Input As #2
   While Not EOF(2) = True
   xyza = xyza + 1
    Input #2, truc
    Print #1, truc;
    Print #1, " ";
    Wend:
Close #1, #2,
If xyza = 1 Then GoTo erreurboucle:
 
    Open "c:/bateau.txt" For Input As #1
    Open "c:/ttt.txt" For Output As 2
   While Not EOF(1) = True
    Input #1, truc
    Print #2, truc;
    Wend:
erreurboucle:
Close #1, #2,


 
En tout cas merci beaucoup à tous


---------------
http://www.ypikay.com

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  Pb avec EOF dans boucle

 

Sujets relatifs
DELETE dans une boucleProblème de boucle de lecture
Erreur dans une boucle "for" :'(VB 6 / Probleme EOF
[RESOLU] Problème avec un IF imbriqué dans une boucle FOR[GLUT] Probleme avec boucle while
[résolu] Comment faire une boucle de ce code au lieu de l'ecrirLecture d'un fichier texte en boucle C++
Afficher plusieur fois les résultats d'une boucle[java] [linux] arreter un programme java qui boucle
Plus de sujets relatifs à : Pb avec EOF dans boucle


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR