Enregistrer changement dans un texte [Résolu]

Signaler
Messages postés
99
Date d'inscription
vendredi 20 avril 2007
Statut
Membre
Dernière intervention
28 juillet 2011
-
Messages postés
99
Date d'inscription
vendredi 20 avril 2007
Statut
Membre
Dernière intervention
28 juillet 2011
-
Bonjour bonjour,
Voila, aujourd'hui, je travaille sur un fichier .txt tout con. J'ai un problème tout con aussi :
Comment enregistrer mes modifications??
------------------------------------------------------------
    Set objFso = CreateObject("Scripting.FileSystemObject")
    Set expr = objFso.OpenTextFile (Server.MapPath("Chemain\Texte.txt"))
    Do While Not expr.AtEndOfStream
        Test = Replace (expr,"#COUNTRY#","France")
    Loop
------------------------------------------------------------

Voila voila.
Je n'oublie pas qu'après j'utilise les nothing. Mais il me faut juste pouvoir enregistrer ces modifications.
Désolé de ma bétise et merci d'avance!!

Roro

4 réponses

Messages postés
1648
Date d'inscription
samedi 6 novembre 2004
Statut
Modérateur
Dernière intervention
28 avril 2011
2
Le "Bad file mode" indique que tu n'as pas ouvert le fichier en écriture/modification mais seulement en lecture.

Essaye objFso.OpenTextFile (Server.MapPath("Chemain\Texte.txt"),8)

Ce paramètre à 3 valeurs possibles :
- 1 pour Lecture (par défaut)
- 2 pour Ecriture (écrase tout le fichier)
- 8 pour Ajout (ajoute des données à la fin du fichier)

La commande a également encore 2 arguments optionnels, cf MSDN Library : OpenTextFile Method.

Bonne journée,
A++

<hr width="100%" size="2" />Nurgle (Antoine) - MSP
Messages postés
1648
Date d'inscription
samedi 6 novembre 2004
Statut
Modérateur
Dernière intervention
28 avril 2011
2
Salut,
Là dans ton code, expr n'est pas une chaine de caractères !! Donc faire un Replace dessus ne va pas avoir beaucoup d'effets sur le fichier texte... (d'ailleurs ça m'étonne qu'il ne te claque pas une erreur...)

La méthode OpenTextFile te renvoie un objet de type TextStream. Tu dois donc faire :
expr.Read(nb) ou expr.ReadLine() ou expr.ReadAll() pour lire le contenu du fichier
ou
expr.Write(nb) ou expr.WriteLine() pour écrire dedans...
(ou "nb" correspond au nombre de caractères à lire/écrire)
Et n'oublie pas à la fin un expr.Close() avant de faire le Set expr = Nothing !

cf : la doc
A++

<hr width="100%" size="2" />Nurgle (Antoine) - MSP
Messages postés
99
Date d'inscription
vendredi 20 avril 2007
Statut
Membre
Dernière intervention
28 juillet 2011

Salut,
En fait, je me suis un peu trompé dans le code, le vrai, j'ai mis ça :
------------------------------------------------------------
    Set objFso = CreateObject("Scripting.FileSystemObject")
    Set expr = objFso.OpenTextFile (Server.MapPath("Chemain\Texte.txt"))
    Do While Not expr.AtEndOfStream
        Test = expr.ReadLine
        Test = Replace (Test,"#COUNTRY#","France")
    Loop
    expr.Close
------------------------------------------------------------
J'ai essayé de mettre le .WriteLine Juste après le Test = Replace :
    expr.WriteLine (Test)

Enfin, toujours est-il que je n'ai que trop peu dormi, et que je ne trouve pas pourquoi ça m'indique cette erreur :
    Microsoft VBScript runtime error '800a0036'

    Bad file mode

La ligne est la ligne où j'ai mis le .Writeline
Merci d'avance,

Roro!
Messages postés
99
Date d'inscription
vendredi 20 avril 2007
Statut
Membre
Dernière intervention
28 juillet 2011

Ok, merci beaucoup!
Grâce à toi, ces portes plus que verrouillées se sont ouvertes!
Longue vie à Nurgle, lol!
Allez, bonne journée, et merci encore!!