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

Messages postés
3
Date d'inscription
jeudi 9 août 2007
Dernière intervention
9 août 2007
- 9 août 2007 à 09:20 - Dernière réponse :
Messages postés
3
Date d'inscription
jeudi 9 août 2007
Dernière intervention
9 août 2007
- 9 août 2007 à 10:47
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...
Afficher la suite 

Votre réponse

3 réponses

Meilleure réponse
Messages postés
17308
Date d'inscription
mercredi 2 janvier 2002
Dernière intervention
22 août 2018
- 9 août 2007 à 10:09
3
Merci
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.

Merci Renfield 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 88 internautes ce mois-ci

Commenter la réponse de Renfield
Messages postés
3
Date d'inscription
jeudi 9 août 2007
Dernière intervention
9 août 2007
- 9 août 2007 à 09:41
0
Merci
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...
Commenter la réponse de hyperman22
Messages postés
3
Date d'inscription
jeudi 9 août 2007
Dernière intervention
9 août 2007
- 9 août 2007 à 10:47
0
Merci
    MERCIIII ca marche ....

A bientot!!
Commenter la réponse de hyperman22

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.