[vbs] pb ecriture dans un fichier

pb ecriture dans un fichier [vbs] - VB/VBA/VBS - Programmation

Marsh Posté le 06-02-2006 à 16:11:01    

bonjour,
 
j'essaye d'écrire plusieurs fois dans un même fichier, auparavant créé mais il ne me rajoute que des carré à la suite.
 
mon code :
 
Const forAppending = 8, forwriting = 2
Set objFSO = CreateObject("Scripting.FileSystemObject" )
Set fso = CreateObject("Scripting.FileSystemObject" )
'On Error Resume Next
 
datejour = Date
datejour = Replace(datejour,"/", "-" )
fichierLOG = "d:\Scripts\_FINI\ISA\ErreurEnvoiMail.Log"
 
If Not objFSO.FileExists(fichierLOG) Then
 Set File = fso.CreateTextFile(fichierLOG, forWriting, True)
 File.WriteLine "Le rapport du " & datejour & " n'a pu être envoyé."
 File.Close
Else
 set File = fso.OpenTextFile(fichierLOG, forAppending, True)
 file.WriteLine "Le rapport du " & datejour & " n'a pu être envoyé."
 file.Close
End If
 
 
 
 
le résultat : (le fichier texte)
 
 
 
Le rapport du 06-02-2006 n'a pu être envoyé.        <--- j'écris cette phrase quand je créé le fichier
敌爠灡潰瑲搠⁵㘰〭ⴲ〲㘰渠愧瀠⁵瓪敲攠癮祯⻩਍              <---- lorsque j'écris de nouveau dans le fichier
 
 
(bon ici il n'y a pas que des carrés, mais dans mon bloc note si.)

Reply

Marsh Posté le 06-02-2006 à 16:11:01   

Reply

Marsh Posté le 06-02-2006 à 18:57:35    

Quand y a des carrés sous éditeur texte, ce sont des caractères non "affichables", genre codes de contrôle, autres...
 
file. et File. c'est pareil ? (sensible à la casse ? Je demande, je ne connais pas, juste un peu de Google)

Reply

Marsh Posté le 06-02-2006 à 19:04:15    

J'ai testé le code donné sur mon PC sous Windows Millennium.
Au début, je croyais que c'était un problème de conversion de date. Mais non, ça marche bien. Cependant, deux remarques :
 
1. La syntaxe de CreateTextFile est différente de la syntaxe de OpenTextFile, à cause du troisième paramètre qui n'a pas la même signification dans les deux cas. A mon avis, il ne faut pas mettre "true" pour CreateTextFile.
 
2. Le fichier créé est un fichier Unicode (chaque caractère est codé sur deux octets), et non pas un fichier Ascii (chaque caractère est codé sur un seul octet). C'est pour cela que les anciens éditeurs de texte affichent des carrés au lieu des caractères.
 
Voici une version modifiée qui génère le fichier en mode Ascii :

Const forAppending = 8, forwriting = 2  
Const ModeAscii = 0, ModeUnicode = -1
Set objFSO = CreateObject("Scripting.FileSystemObject" )  
Set fso = CreateObject("Scripting.FileSystemObject" )  
'On Error Resume Next  
 
datejour = Date  
datejour = Replace(datejour,"/", "-" )  
' fichierLOG = "d:\Scripts\_FINI\ISA\ErreurEnvoiMail.Log"  
fichierLOG = "writedate1ascii.Log"  
 
If Not objFSO.FileExists(fichierLOG) Then  
 Set File = fso.CreateTextFile(fichierLOG, forWriting, ModeAscii)  
 File.WriteLine "Le rapport du " & datejour & " n'a pu être envoyé."  
 File.Close  
Else  
 set File = fso.OpenTextFile(fichierLOG, forAppending, True, ModeAscii)  
 file.WriteLine "Le rapport du " & datejour & " n'a pu être envoyé."  
 file.Close  
End If

Reply

Marsh Posté le 07-02-2006 à 09:26:51    

salut !
 
 
merci pour cette info tres détaillée, ça marche parfaitement !
 
sinon, je ne pense pas que le vbs soit sensible à la casse, du moins pour certaines fonction, aucuns problèmes.
 
@+

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed