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 :

Utilisation de CopyTo sur System.Collections.Queue


Sujet :

VBScript

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti Avatar de zardoz45
    Homme Profil pro
    Chef de projet en SSII, retraité
    Inscrit en
    Décembre 2011
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Chef de projet en SSII, retraité
    Secteur : Conseil

    Informations forums :
    Inscription : Décembre 2011
    Messages : 30
    Par défaut Utilisation de CopyTo sur System.Collections.Queue
    bonjour,
    je ne parviens pas à utiliser la méthode CopyTo sur les objets Queue et Stack de System.Collections http://msdn.microsoft.com/fr-fr/libr...=vs.80%29.aspx
    Cf. erreurs VBScript en commentaires dans le code ci-dessous

    je n'ai pas ce problème sur les autres méthodes : Enqueue, Dequeue, Clear, Contains, ToArray
    est-ce un problème de syntaxe ou une restriction liée à VBScript ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Dim objQueue
    Set objQueue = CreateObject("System.Collections.Queue")
    Dim MyArray
    Dim i
     
    ' boucle de chargement de 100 éléments dans la pile
    For i = 1 To 100
    	objQueue.Enqueue ("string numéro " & i)
    Next
     
    objQueue.CopyTo Array:=MyArray, Index:=0 ' provoque : Erreur de compilation / Instruction attendue
    objQueue.CopyTo (MyArray, 0) ' provoque : Erreur de compilation / L'appel d'une fonction Sub n'admet pas de parenthèses
    merci de votre aide

  2. #2
    Membre Expert Avatar de tsuji
    Inscrit en
    Octobre 2011
    Messages
    1 558
    Détails du profil
    Informations forums :
    Inscription : Octobre 2011
    Messages : 1 558
    Par défaut
    L'appel d'une fonction Sub n'admet pas de parenthèses
    Ce qu'il veut dire est ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    objQueue.CopyTo MyArray, 0
    Je ne sais ce que c'est MyArray, mais c'est ça la syntaxe.

  3. #3
    Membre averti Avatar de zardoz45
    Homme Profil pro
    Chef de projet en SSII, retraité
    Inscrit en
    Décembre 2011
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Chef de projet en SSII, retraité
    Secteur : Conseil

    Informations forums :
    Inscription : Décembre 2011
    Messages : 30
    Par défaut
    Citation Envoyé par tsuji Voir le message
    Ce qu'il veut dire est ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    objQueue.CopyTo MyArray, 0
    Je ne sais ce que c'est MyArray, mais c'est ça la syntaxe.
    Merci,
    j'avais également essayé cette syntaxe mais j'obtiens l'erreur d'exécution VBScript : Argument ou appel de précdure incorrect: 'CopyTo'

    La syntaxe VB donnée sur MSDN (http://msdn.microsoft.com/fr-fr/libr...=vs.80%29.aspx) est la suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    'Declaration
    Public Overridable Sub CopyTo ( _
    	array As Array, _
    	index As Integer )
    'Usage
    Dim instance As Queue
    Dim array As Array
    Dim index As Integer
     
    instance.CopyTo(array, index)
    je ne comprends pas ce qui coince ...

  4. #4
    Membre Expert Avatar de tsuji
    Inscrit en
    Octobre 2011
    Messages
    1 558
    Détails du profil
    Informations forums :
    Inscription : Octobre 2011
    Messages : 1 558
    Par défaut
    Jamais avec des parenthèses, c'est très tranché en vbs. En vb.net, c'est d'autre règle. Mais ici c'est un forum vbs?

  5. #5
    Rédacteur
    Avatar de omen999
    Profil pro
    Inscrit en
    Février 2006
    Messages
    1 302
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 1 302
    Par défaut
    bonjour,
    l'exploitation en VBS d'objets issus du framework .NET est toujours un peu scabreuse
    (il faudrait un article assez long et fastidieux pour couvrir la matière )
    notamment le passage en paramètre de variables tableaux est souvent impossible
    maintenant, je constate que tu veux simplement copier le contenu de ta pile dans une variable tableau et pour ça,
    il y a une solution, la méthode ToArray
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Dim objQueue
    Set objQueue = CreateObject("System.Collections.Queue")
    Dim MyArray
    Dim i
     
    ' boucle de chargement de 100 éléments dans la pile
    For i = 1 To 100
    	objQueue.Enqueue "string numéro " & i
    Next
     
    MyArray = objQueue.ToArray
    MsgBox MyArray(90)
    nomen omen, nemo non omen - Consultez la FAQ VBScript et les cours et tutoriels VBScript
    le plus terrible lorsqu'une voiture renverse un piéton, c'est que ce sont les freins qui hurlent. (ramón)
    pas de questions techniques par mp

  6. #6
    Membre averti Avatar de zardoz45
    Homme Profil pro
    Chef de projet en SSII, retraité
    Inscrit en
    Décembre 2011
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Chef de projet en SSII, retraité
    Secteur : Conseil

    Informations forums :
    Inscription : Décembre 2011
    Messages : 30
    Par défaut
    Citation Envoyé par omen999 Voir le message
    bonjour,
    l'exploitation en VBS d'objets issus du framework .NET est toujours un peu scabreuse
    (il faudrait un article assez long et fastidieux pour couvrir la matière )
    notamment le passage en paramètre de variables tableaux est souvent impossible
    maintenant, je constate que tu veux simplement copier le contenu de ta pile dans une variable tableau et pour ça,
    il y a une solution, la méthode ToArray
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Dim objQueue
    Set objQueue = CreateObject("System.Collections.Queue")
    Dim MyArray
    Dim i
     
    ' boucle de chargement de 100 éléments dans la pile
    For i = 1 To 100
    	objQueue.Enqueue "string numéro " & i
    Next
     
    MyArray = objQueue.ToArray
    MsgBox MyArray(90)
    merci,
    Je me suis effectivement replié sur la solution ToArray mais j'aurais bien voulu comprendre comment utiliser la méthode CopyTo ...
    Le problème d'appel en VBS serait donc dû au fait que l'un des paramètres est un tableau ?

  7. #7
    Rédacteur
    Avatar de omen999
    Profil pro
    Inscrit en
    Février 2006
    Messages
    1 302
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 1 302
    Par défaut
    Le problème d'appel en VBS serait donc dû au fait que l'un des paramètres est un tableau ?
    oui
    le coup de bol, c'est que cette méthode n'est pas irremplaçable
    <objQueue.CopyTo MyArray,0> et <MyArray = objQueue.ToArray> ont exactement le même effet
    et si l'index doit être supérieur à 0, une combinaison de Split et de Join fusionnera les deux tableaux
    nomen omen, nemo non omen - Consultez la FAQ VBScript et les cours et tutoriels VBScript
    le plus terrible lorsqu'une voiture renverse un piéton, c'est que ce sont les freins qui hurlent. (ramón)
    pas de questions techniques par mp

  8. #8
    Membre averti Avatar de zardoz45
    Homme Profil pro
    Chef de projet en SSII, retraité
    Inscrit en
    Décembre 2011
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Chef de projet en SSII, retraité
    Secteur : Conseil

    Informations forums :
    Inscription : Décembre 2011
    Messages : 30
    Par défaut Utilisation de CopyTo sur System.Collections.Queue
    en conclusion (merci omen999 !) ...

    L'utilisation de la méthode CopyTo sur un objet System.Collections.Queue ne semble pas possible en VBScript, du fait d'une variable tableau en paramètre.
    La méthode ToArray, qui ne rencontre pas ce problème, offre à peu près la même fonction (l'ensemble de la Queue est copié dans le tableau).

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Set objQueue = CreateObject("System.Collections.Queue")
    Dim MyArray
     
    ' l'utilisation de CopyTo provoque une erreur
    objQueue.CopyTo MyArray, 0
    ' mais celle de ToArray fonctionne
    MyArray = objQueue.ToArray

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

Discussions similaires

  1. Quel system utiliser pour projet sur cle USB ?
    Par ismou dans le forum Mobiles
    Réponses: 0
    Dernier message: 25/11/2010, 20h19
  2. Réponses: 2
    Dernier message: 17/05/2009, 20h29
  3. Réponses: 1
    Dernier message: 25/10/2006, 13h41
  4. Problème avec l'utilisation de la commande system awk
    Par vbcasimir dans le forum Linux
    Réponses: 3
    Dernier message: 05/10/2004, 16h18
  5. quel language utiliser pour agir sur un log automatiquent
    Par qegukom dans le forum Langages de programmation
    Réponses: 3
    Dernier message: 05/08/2004, 21h00

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