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

Messages postés
11
Date d'inscription
jeudi 8 octobre 2009
Dernière intervention
30 octobre 2009
- - Dernière réponse : kargoles
Messages postés
11
Date d'inscription
jeudi 8 octobre 2009
Dernière intervention
30 octobre 2009
- 30 oct. 2009 à 12:20
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
Afficher la suite 

Votre réponse

5 réponses

Meilleure réponse
Messages postés
11
Date d'inscription
jeudi 8 octobre 2009
Dernière intervention
30 octobre 2009
3
Merci
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

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources a aidé 102 internautes ce mois-ci

Commenter la réponse de kargoles
Messages postés
11
Date d'inscription
jeudi 8 octobre 2009
Dernière intervention
30 octobre 2009
0
Merci
bon j'ai trouvé après plusieurs essais...

en fait je fait un strConv et ca passe

Fic_EcranDollar.Write (StrConv(EcranPrecedent, vbProperCase, 0))
Commenter la réponse de kargoles
Messages postés
14010
Date d'inscription
samedi 29 décembre 2001
Dernière intervention
28 août 2015
0
Merci
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)
Commenter la réponse de cs_Jack
Messages postés
11
Date d'inscription
jeudi 8 octobre 2009
Dernière intervention
30 octobre 2009
0
Merci
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
Commenter la réponse de kargoles
Messages postés
14010
Date d'inscription
samedi 29 décembre 2001
Dernière intervention
28 août 2015
0
Merci
Pas de problème.
Merci d'avoir partagé la solution, ça servira peut-être à un autre membre.
Commenter la réponse de cs_Jack

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.