IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VBScript Discussion :

public, private et VBS


Sujet :

VBScript

  1. #1
    Membre averti
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Juin 2003
    Messages
    25
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Juin 2003
    Messages : 25
    Par défaut public, private et VBS
    Bonjour à tous !

    voilà, je teste actuellement les typages "private" et "public" sur des variables dans deux fichiers vbscript. En effet d'apres la doc Windows Script 5.6 on peut lire que "Les variables avec l'instruction Public sont accessibles dans toutes les procédures de tous les scripts." et "Les variables Private sont accessibles uniquement dans le script où elles ont été déclarées."

    je souhaite tester l'intéret d'une variable private, aussi j'ai créé 2 scripts :

    1 variable publique et une privée, déclarées et affectées dans test2.vbs

    test1.vbs, qui lance test2.vbs, et ensuite appelle 2 de ses fonctions publiques (une qui fait une multiplication de deux variables et l'autre les divise; test2.vbs affiche les deux résultats)
    test1.vbs m'affiche l'erreur "type incompatible" à l'apple de la fonction multiplication
    Et si j'arrive à afficher quand même les deux variables dans test1.vbs celles ci sont vides ! la variable publique ne devrait elle pas être affectée ??

    merci de votre aide

    ps: voici le code des 2 scripts :

    test1.vbs

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    Const bWaitOnReturn = true
    Dim VBSshell
    Set VBSshell = Wscript.CreateObject("WScript.Shell")
    VBSshell.run "c:\scripts\test2.vbs",bWaitOnReturn
     
    Call Multiplication()
     
    wscript.echo "Le résultat de la division est : " _
    & variable_public & " / " & variable_privee _
    & " = "
    Call Division()
     
    If variable_public <> Empty Then 
    	wscript.echo "la valeur de la variable public est " & variable_public
    Else 
    wscript.echo "la variable publique a une valeur vide" & variable_public
    End If
     
    If variable_privee <> Empty Then 
    	wscript.echo "la valeur de la variable privée est " & variable_privee
    Else
    wscript.echo "la variable privée a une valeur vide"
    End If
     
    'set VBSshell = nothing
    test2.vbs

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    public Function Multiplication
     
          Public variable_public
          Private variable_privee
     
          ' Affectation des variables
          variable_public = 10
          variable_privee = 6
     
            ' Variable déclarée dans la portée locale d'une fonction.
            Dim resultat
            resultat = variable_public * variable_privee
            wscript.echo "Le résultat de la multiplication est : " _
    		& variable_public & " * " & variable_privee _
    		& " = " 
            wscript.echo resultat
          End Function
     
          Public Function Division
     
            ' Variable déclarée dans la portée locale d'une fonction.
            Dim resultat
     
            ' Réaffectation de variables dans la portée locale d'une fonction.
            variable_public = 12
            variable_privee = 4
            resultat = variable_public / variable_privee
            wscript.echo resultat
          End Function

  2. #2
    Expert éminent


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Par défaut
    en première lecture je dirai .. que tu te trompe sur le sens des variables publiques... celle-ci ne sont "publiques" qu'à l'intérieur d'une même "session csScript"... et donc il n'y as aucune "communications" entre tes variables de test1 et test2...



    pour moi je dirai (avant de consulter la documentation...) qu'une variable publique est accessible par toutes les procédures d'un même fichier vbs et ensuite on peu définir des variable "privé" à chacune des procédures... (mais tous cela demande à être confirmé...)

  3. #3
    Membre averti
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Juin 2003
    Messages
    25
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Juin 2003
    Messages : 25
    Par défaut
    Merci pour ta réponse Bbil

    Je suis d'accord avec ton raisonnement, en tout cas cela explique parfaitement la valeur vide et les fonctions "inexistantes".

    Cependant j'ai déjà réussi a faire "communiquer" deux scripts vbs, dans un cas particulier :

    Le premier script crée un objet de type fenêtre IE, à partir d'un fichier html, contenant un formulaire (et du vbscript inclus dedans évidemment).
    L'utilisateur remplit le formulaire et surtout clique sur un bouton Valider ou Annuler.
    Je récupère dans la script 1 la valeur du bouton cliqué , par le biais d'une fonction publique dans le script 2 :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    Dim ValBout
    Sub Window_onLoad()
    ValBout=0
    End Sub
     
    Sub VALID_OnClick
    ValBout = 1
    End Sub
     
    Sub ANNUL_OnClick
    ValBout = 2
    End Sub
     
    Public Function FncValBout()
    FncValBout = ValBout
    End Function

    Voici la fonction du script 1 qui récupère le valeur du bouton :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Do
    Wscript.Sleep 100
    Loop While(objIE.Document.Script.FncValBout()=0)

    Grâce à l'instruction "Public" j'ai bien réussi à appeller une fonction depuis un script vers un autre script.
    Toutefois, je conçois parfaitement que sans les propriétés de l'objet objIE, de type InternetExplorer.Application, celà n'aurait pas été possible.

    Je repose donc ma question, comment peut on faire "pareil" quand on n'a pas d'objet IE (pas de fenêtre Ie lancée depuis un code html, mais un script vbs à la place). Comment peut on accéder aux variables de l'autre script, au sein d'une "même session cscript" ?

    Dans quelle documentation de référence en Vbscript fais tu tes recherches ?

  4. #4
    Expert éminent


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Par défaut
    Citation Envoyé par Magique
    ....
    Dans quelle documentation de référence en Vbscript fais tu tes recherches ?
    la même que toi ...
    voir

    Où trouver l'aide en ligne pour VBScript ?

    et c'est vrai que j'ai du mal à comprendre le paragraphe ... private/publique... dans "des" scripts vbs...

Discussions similaires

  1. Accesseur : public private et performance
    Par adilou1981 dans le forum Langage
    Réponses: 6
    Dernier message: 16/04/2008, 12h00
  2. Public Private Protected
    Par Sabrina_of_darkness dans le forum Langage
    Réponses: 1
    Dernier message: 25/03/2006, 22h21
  3. Réponses: 8
    Dernier message: 10/09/2005, 20h12
  4. Protected / Public / Private....
    Par GOUGOU1 dans le forum C++
    Réponses: 16
    Dernier message: 17/03/2005, 22h04
  5. Réponses: 8
    Dernier message: 20/12/2004, 15h14

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo