FileSystemObject : fic.write -> Invalid procedure call or argument [Résolu]

Signaler
Messages postés
11
Date d'inscription
jeudi 8 octobre 2009
Statut
Membre
Dernière intervention
30 octobre 2009
-
Messages postés
11
Date d'inscription
jeudi 8 octobre 2009
Statut
Membre
Dernière intervention
30 octobre 2009
-
Bonjour à tous.

Je vous expose mon problème :
Je récupère du texte depuis une fenêtre IE et tente de l'écrire dans un fichier (texte) Malheureusement cette écran comporte une partie "password" et ca me fait crasher mon code.

Je ne veux pas récupérer le password mais qu'il m'écrive tous le reste de la string sans crasher.

Mon code
 
Option Explicit
Dim Fichier_objet As New FileSystemObject

Function CreeRefEcran(ByVal IndiceEcran As String, ByVal EcranPrecedent As String) As Boolean
Dim Fic_EcranReg As TextStream
Dim Fic_EcranDollar As TextStream
Dim Nom_Fichier As String


Nom_Fichier = PATHREGTSCREEN & "" & IndiceEcran & "$.txt"
On Error GoTo ErreurCreate
Set Fic_EcranDollar = Fichier_objet.CreateTextFile(Nom_Fichier, False)


Fic_EcranDollar.Write (EcranPrecedent)
Fic_EcranDollar.Close
Sleep 2
CreeRefEcran = True
Exit Function

ErreurCreate:
Fic_Log.WriteLine ("Error " & Err)
Sleep 2
CreeRefEcran = False
Exit Function

End Function


contenue de EcranPrecedent = "Login : monLogin
Mot de passe : ??????
valider"

Err:
- Description : "Invalid procedure call or argument"
- HelpContext : 1000005
...
- Number : 5

Si quelqu'un a une idée pour virer les caractère qu'il ne supporte pas pour le fic.write() je suis preneur.

Merci d'avance

5 réponses

Messages postés
11
Date d'inscription
jeudi 8 octobre 2009
Statut
Membre
Dernière intervention
30 octobre 2009

bon je répond encore a ce poste parce que la solution proposé était bâtarde et modifiait la string...

la fonction write ne supporte pas les string contenant de l'unicode c'est pourquoi il y avait une erreur...

donc pour pallier au problème je parcours la string et remplace tous les chars unicode par des " "

    
For i = 1 To Len(strSrc)
        sChar = Mid(strSrc, i, 1)
        If (AscW(mid(strSrc,i,1)) > 255) Then
            Mid$(strSrc,i,1) = " "
        End If
   Next i
Messages postés
11
Date d'inscription
jeudi 8 octobre 2009
Statut
Membre
Dernière intervention
30 octobre 2009

bon j'ai trouvé après plusieurs essais...

en fait je fait un strConv et ca passe

Fic_EcranDollar.Write (StrConv(EcranPrecedent, vbProperCase, 0))
Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
68
Salut
Pas bien compris ce que tu cherches à faire, mais bon.
Sur quelle ligne, cette erreur ?
Surement parce que l'objet (à gauche du Write ou du WriteLine) n'est pas valide (fichier réellement ouvert ?)

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
Messages postés
11
Date d'inscription
jeudi 8 octobre 2009
Statut
Membre
Dernière intervention
30 octobre 2009

Le fichier est créé donc il était bien ouvert.(enfin j'espère) Sur le même écran en ayant ajouter la fonction strConv je n'ai plus eu l'erreur

L'erreur se produisait sur Fic_EcranDollar.Write (EcranPrecedent) lorsque la string EcranPrecedent était récupérer sur un écran avec un password dedans. L'erreur était surement du à des caractères non supporter ou quelque chose du genre... je ne saurai apporter la réponse a cette question.

Le but de cette fonction est de faire un log visuel des écrans parcouru (récupérer le texte de la fenêtre et l'écrire dans un fichier texte)

Désolé d'avoir poster ma demande et trouver la solution quasi dans la foulé mais comme je cherchais depuis plusieurs heures je commençais a désespérer...

En tout cas Fic_EcranDollar.Write (StrConv(EcranPrecedent, vbProperCase, 0)) fonctionne
Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
68
Pas de problème.
Merci d'avoir partagé la solution, ça servira peut-être à un autre membre.