[VBS] Problème avec la méthode ReadLine

[Résolu]
Signaler
Messages postés
3
Date d'inscription
jeudi 9 août 2007
Statut
Membre
Dernière intervention
9 août 2007
-
Messages postés
3
Date d'inscription
jeudi 9 août 2007
Statut
Membre
Dernière intervention
9 août 2007
-
Bonjour,

 
J'ai un problème avec la méthode ReadLine : Elle marche lors
de la première exécution du script, mais si je réxécute le script une
seconde fois, la méthode me renvoi l'ensemble du fichier au lieu
d'uniquement la ligne en cours...

 
Pourquoi ????

 
 
Ci dessous une partie de mon script :

<hr size="2" width="100%" />
<ol><li class="li1">
Dim OFS, MonFichier, FR
</li><li class="li1">
Set OFS = CreateObject("Scripting.FileSystemObject")
</li><li class="li1">
Set Monfichier = OFS.GetFile(APPDATA & "\Microsoft\Signatures\toto.htm")
</li><li class="li1">
Set FR = Monfichier.OpenAsTextStream(1,0)
</li><li class="li1">
 
</li><li class="li1">
strhtml = ""
</li><li class="li1">
Actu = false
</li><li class="li1">
 
</li><li class="li1">
Do Until FR.AtEndOfStream
</li><li class="li1">
 strLine = FR.ReadLine
</li><li class="li1">
 
</li><li class="li1">
 if strLine="<!--actualite_debut-->" Then
</li><li class="li1">
   Actu = true
</li><li class="li1">
   strhtml = strhtml & strActuSignature & Chr(13)
</li><li class="li1">
 end if
</li><li class="li1">
 
</li><li class="li1">
 if not Actu Then
</li><li class="li1">
   strhtml = strhtml & strLine & Chr(13)
</li><li class="li1">
 end if
</li><li class="li1">
 
</li><li class="li1">
 if strLine="<!--actualite_fin-->" Then
</li><li class="li1">
   Actu = false
</li><li class="li1">
 end if  
</li><li class="li1">
 
</li><li class="li1">
loop
</li><li class="li1">
 
</li><li class="li1">
FR.close
</li></ol>

<hr size="2" width="100%" />
Une idée ??

 
Merci...

3 réponses

Messages postés
17286
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
23 décembre 2019
69
ok, tu as reecrit ton fichier...

le separateur de lignes sous Windows n'est pas
Chr(13)

mais :
Chr(13) & Chr(10)

la deuxieme fois, Windows ne trouve pas de séprateur de ligne valide et donc, continue, lisant lignes après lignes.
Messages postés
3
Date d'inscription
jeudi 9 août 2007
Statut
Membre
Dernière intervention
9 août 2007

En fait je vais préciser un peu :

Si je rajoute " msgbox strLine " juste après le ReadLine, l'ensemble du fichier s'affiche dès lors que le fichier que je lis a déjà été lu... Il ne devrais y avoir normalement que la ligne en cour qui devrais s'affiché...

Pourquoi ce problème ? Commment le contourner ?

Voici ce que je souhaite faire :

J'ai un fichier "toto.htm" et une string "strActuSignature"

Je souhaiterais remplacer ce qui se trouve entre la ligne (du fichier toto.htm) contenant "<!--actualite_debut-->" et la ligne contenant "<!--actualite_debut-->" par le contenu de la chaine "strActuSignature".

Le script ci dessus fait ceci :

1-je lit ligne par ligne le fichier et j'ajoute la ligne a une chaine de caractère
2-si je voit la ligne contenant <!--actualite_debut--> j'arret de copier dans la chaine de caractère et je met le contenu de "strActuSignature" dans la suite de la chaine de caractère
3-je lit les ligne suivante sans rien faire (ignorer)
4-dès que je voi "<!--actualite_fin-->" je me remet a copier le fichier dans la chaine de caractère...
5-je recopie la chaine de caratcère dans le fichier original... (non présenté dans le script ci dessus mais le pb n'est pas la...)

Ce script marche donc comme espérer lorsque le fichier toto.htm est "neuf" mais si je réexécute une deuxième fois, le ReadLine me renvoi l'ensemble du fichier...

Voila et merci d'avance...
Messages postés
3
Date d'inscription
jeudi 9 août 2007
Statut
Membre
Dernière intervention
9 août 2007

    MERCIIII ca marche ....

A bientot!!