[Vbscript] fichier sequentiel + skipline

Fermé
Chloe - 7 déc. 2007 à 23:23
 Chloe - 8 déc. 2007 à 01:35
Bonjour,

J'ai un petit problème avec un fichier séquentiel en vbscript. Je m'explique. je demande a un utilisateur un nombre, je recupere ma valeur.

Je lis ensuite un fichier texte ligne a ligne. si on rencontre le nombre (qui est enfait un id) on passe la ligne. J'ai bien compris que si je compteur directement a l'id il passera la ligne suivante

Exemple : si id = 2
lorsqu'il va s'en apercevoir il sera deja sur la ligne deux et sautera la ligne suivante.

Or ce qui m'interesse c'est de sauter cette fameuse ligne 2 !

J'ai tente ceci


id=request.form("id")
idd=id-1


response.write idd
response.write isnumeric(idd)

strPath = Server.MapPath(".\abonnes.txt")
Set FSO = server.CreateObject("Scripting.FileSystemObject")
set fichier=FSO.opentextfile(strpath,1,true)' 1 : en lecture
do until fichier.atendofstream
ligne=fichier.readline()
valeur=mid(ligne,1,1)
if valeur=idd then
'fichier.Skipline
end if
response.write ligne&"<br/>"
loop
fichier.close

Si j'entre comme id 2, il me dit bien que idd vaut 1,
le isnumeric me renvoit bien True.
J'ai essaye un isnumeric sur valeur, la aussi, il me renvoit True.
Le probleme c'est qu'il ne semble jamais entrer dans la boucle. J'ai teste en voulant juste afficher un message si il rencontre la condition, mon message ne s'est jamais affiche.

Quelqu'un aurait il une idee sur le pourquoi il ne veut pas prendre en compte mon idd s'il vous plait ?

Par avance merci.
A voir également:

2 réponses

phil_232 Messages postés 286 Date d'inscription jeudi 6 décembre 2007 Statut Membre Dernière intervention 12 juin 2008 33
8 déc. 2007 à 00:56
pas très clair ce que tu veux.
déjà c'est clair que pour connaitre la ligne il faut la lire. le pointer qui indique la position dans le fichier a logiquement donc avancé jusque la ligne suivant (cad. fin de la ligne précédente + 1). donc tu ne peux pas skipper une ligne que tu viens de lire. tu est trop loin. et sans l'avoir lu tu ne peux pas dire que c'est la ligne en question.

donc une petite modif :

Set FSO = server.CreateObject("Scripting.FileSystemObject")
set fichier=FSO.opentextfile(strpath,1,true)' 1 : en lecture
do until fichier.atendofstream

valeur=fichier.read(1)
if valeur=idd then
fichier.Skipline
end if

response.write ligne&"<br/>"
loop
fichier.close





s = ts.ReadLine
s = ts.Read(1)
0
En fait pour mieux expliquer peut etre...

J'ai un fichier texte comme ca

1 nom prenom adresse
2 nom prenom adresse
3 ....
4 ....
5 ....

Et le script que j'essaye de mettre en place sert a effacer un utilsateur (a ne plus le voir du moins)
Donc je lis ma ligne, et je recupere la valeur de l'id de l'utilisateur grace au mid.
si j'affiche valeur dans la boucle j'aurais
1 2 3 4 5
Mon probleme c'est que par exemple si idd = 2

A un moment comme valeur prend successivement 1 2 3 4 5 , il vaudra 2, ma condition devrait donc être verifier (2=2). Le probleme c'est qu'il passe au travers, meme lorsque 2=2 il n'entre pas dans la boucle if et ne fait donc pas les insctructions que je desire.

Le probleme de mettre un read(1) est que je recupere une serie de chaine de 1 caractère.
0