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 :

Comportement de variable


Sujet :

VBScript

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2011
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2011
    Messages : 19
    Points : 17
    Points
    17
    Par défaut Comportement de variable
    Bonjour à tous,

    Je veux, à partir des chiffres 1,2,3,4, obtenir toutes les combinaisons possibles de nombre.

    J'ai donc le programme suivant :
    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
    dim liste_de_base,resultat
     
    ' Initialisation
    liste_de_base = "1234"
     
    Sub traitement(chaine,liste)
    	Dim nouvelle_chaine,nouvelle_liste
    	If liste="" Then
    		resultat = resultat & chaine & chr(13)
    	Else
    		For i=1 to Len(liste)
    			nouvelle_chaine = chaine &  Mid(liste,i,1)
    			nouvelle_liste = Replace(liste,Mid(liste,i,1),"")
    			traitement nouvelle_chaine,nouvelle_liste
    			nouvelle_chaine = ""
    			nouvelle_liste = ""
    		Next
    	End If	
    End Sub
     
    traitement "1",Replace(liste_de_base,"1","")
    Wscript.Echo resultat
    qui marche très bien et me renvoie tout ceux qui commencent par 1, c'est-à-dire:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    1234
    1243
    1324
    1342
    1423
    1432
    Or si je remplace dans la phase d'initialisation :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    ' Initialisation
    liste_de_base = "1234"
    par

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    ' Initialisation
    liste_de_base = ""
    taille = 4
    For i=1 to taille
    	liste_de_base = liste_de_base & i
    Next
    la variable liste_de_base prend toujours la valeur 1234 mais le programme me renvoie juste :
    Et je ne comprends pas pourquoi.

  2. #2
    Expert confirmé
    Avatar de pc75
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    3 662
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Septembre 2004
    Messages : 3 662
    Points : 4 047
    Points
    4 047
    Par défaut
    Bonjour,

    Peut-être :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    ' Initialisation
    liste_de_base = ""
    taille = 4
    For i=1 to taille
    	liste_de_base = liste_de_base & cStr(i)
    Next

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2011
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2011
    Messages : 19
    Points : 17
    Points
    17
    Par défaut
    Non, toujours la même chose.

  4. #4
    Membre averti
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Novembre 2011
    Messages
    163
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Novembre 2011
    Messages : 163
    Points : 304
    Points
    304
    Par défaut
    Bonjour,

    A priori, je penche pour un conflit de variables incrémentielles.
    Tu utilises 2 fois i pour tes boucles ... essaye avec j !

    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
    dim liste_de_base, resultat
     
    ' Initialisation
    liste_de_base = ""
    taille = 4
    For i=1 to taille
    	liste_de_base = liste_de_base & i
    Next
     
    Sub traitement(chaine,liste)
    	Dim nouvelle_chaine,nouvelle_liste
    	If liste="" Then
    		resultat = resultat & chaine & chr(13)
    	Else
     
    		For j=1 to Len(liste)
    			nouvelle_chaine = chaine &  Mid(liste,j,1)
    			nouvelle_liste = Replace(liste,Mid(liste,j,1),"")
    			traitement nouvelle_chaine,nouvelle_liste
    			nouvelle_chaine = ""
    			nouvelle_liste = ""
    		Next
    	End If	
    End Sub
     
    traitement "1",Replace(liste_de_base,"1","")
    Wscript.Echo resultat

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2011
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2011
    Messages : 19
    Points : 17
    Points
    17
    Par défaut
    Ah oui exact, ça marche!!!

    Bizarre quand même....

    Merci à tous les deux pour vos réponses!

  6. #6
    Expert éminent
    Avatar de hackoofr
    Homme Profil pro
    Enseignant
    Inscrit en
    Juin 2009
    Messages
    3 839
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Juin 2009
    Messages : 3 839
    Points : 9 222
    Points
    9 222
    Par défaut

    Vous pouvez aussi tester ce script complet avec un LogFile
    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
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    Option Explicit
    Dim MyStr,Titre,fso,ws,LogFile,resultat
    Titre = "Combinaison de chaînes de caractères"
    Set fso = CreateObject("Scripting.FileSystemObject")
    Set ws = CreateObject("Wscript.Shell")
    'Nom du fichier qui va stocker le résultat
    LogFile = Left(Wscript.ScriptFullName,InstrRev(Wscript.ScriptFullName, ".")) & "txt"
    if fso.FileExists(LogFile) Then 'Si le fichier LogFile existe 
    	fso.DeleteFile LogFile 'alors on le supprime
    end If
    'La boîte de saisie de la chaîne de caractères
    MyStr = inputbox("Entrez la chaîne de caractères :",Titre,"abc")
    MyStr = Trim(MyStr) 'Pour enlever les espaces de gauche et à droite
    If MyStr = "" Then WScript.Quit
    MsgBox Traitement("",MyStr),64,Titre
    WriteLog String(70,"*"),LogFile
    WriteLog Space(10) & Titre & " de type " & DblQuote(MyStr),LogFile
    WriteLog String(70,"*"),LogFile
    WriteLog Traitement("",MyStr),LogFile
    ws.Run LogFile,1,False
     
    Function Traitement(chaine,liste)
    	Dim nouvelle_chaine,nouvelle_liste,j
    	If liste = "" Then
    		resultat = resultat & chaine & VbcrLF
    	Else
    		For j=1 to Len(liste)
    			nouvelle_chaine = chaine & Mid(liste,j,1)
    			nouvelle_liste = Replace(liste,Mid(liste,j,1),"")
    			Traitement nouvelle_chaine,nouvelle_liste
    			nouvelle_chaine = ""
    			nouvelle_liste = ""
    		Next
    	End If	
    	Traitement = resultat
    End Function
    '*****************************************************************
    'Fonction pour écrire le résultat dans un fichier texte
    Sub WriteLog(strText,LogFile)
    	Dim fs,ts 
    	Const ForAppending = 8
    	Set fs = CreateObject("Scripting.FileSystemObject")
    	Set ts = fs.OpenTextFile(LogFile,ForAppending,True)
    	ts.WriteLine strText
    	ts.Close
    End Sub
    '*****************************************************************
    'Fonction pour ajouter des guillemets dans une variable
    Function DblQuote(Str)
    	DblQuote = Chr(34) & Str & Chr(34)
    End Function
    '*****************************************************************

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Parsing] Comportement bizarre, variable $PATH
    Par Rawkins dans le forum Débuter
    Réponses: 3
    Dernier message: 03/01/2012, 00h34
  2. Sur le comportement des variables
    Par lambda_95 dans le forum Langage
    Réponses: 3
    Dernier message: 04/07/2010, 18h34
  3. comportement de variables statiques
    Par new_wave dans le forum Langage
    Réponses: 3
    Dernier message: 06/05/2009, 11h37
  4. href appelant une javascript comportant une variable javascript
    Par Dom_the_quaker dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 10/12/2008, 09h51
  5. Réponses: 4
    Dernier message: 10/08/2006, 18h11

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