Pb avec EOF dans boucle - VB/VBA/VBS - Programmation
Marsh Posté le 20-01-2006 à 08:51:43
Il manque un "#" devant le 2 du open de ta boucle On Error...
Peut être ce n'est que ça...
Marsh Posté le 20-01-2006 à 12:08:32
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 ?
Marsh Posté le 20-01-2006 à 17:07:48
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
@+++
Marsh Posté le 20-01-2006 à 18:26:35
ladislas2609 a écrit : Salut, |
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...
Marsh Posté le 20-01-2006 à 21:02:22
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)
Marsh Posté le 20-01-2006 à 21:10:50
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 |
En tout cas merci beaucoup à tous
Marsh Posté le 19-01-2006 à 21:38:06
Bonjour
voia le bout de code qui pose probleme :
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