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

VB 6 et antérieur Discussion :

Function NewEnum en VB6


Sujet :

VB 6 et antérieur

  1. #1
    Membre à l'essai
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Avril 2016
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2016
    Messages : 22
    Points : 11
    Points
    11
    Par défaut Function NewEnum en VB6
    Bonjour
    Je suis en train d'écrire une application en VB6 pour visualiser des fichiers de CAO et les transmettre en production.

    J'ai plusieurs classes "collection"

    Donc, bien sûr, une procédure NewEnum dans chacune d'entre elles
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Public Function NewEnum() As Variant
        Set NewEnum = pCol.[_NewEnum]
    End Function
    Bien sûr, comme à chaque fois, j'ai positionné Masquer ce membre et mis ID de la procédure à -4 dans Attributs de procédure

    Quand je fais tourner le programme en mode debug (F5) ça marche sans problème
    Mais quand je veux compiler, VB me répond dans chaque function NewEnum, en surlignant la variable _NewEnum :

    Erreur de compilation :
    Méthode ou membre de données introuvable

    Quelqu'un a-t-il déjà eu ça et a-t-il une idée ?

    Merci

  2. #2
    Membre à l'essai
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Avril 2016
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2016
    Messages : 22
    Points : 11
    Points
    11
    Par défaut
    Bonjour
    Il ne semble pas que ce pbm intéresse quelqu'un, pourtant il me bloque bien !

  3. #3
    Modérateur
    Avatar de ProgElecT
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2004
    Messages
    6 077
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Décembre 2004
    Messages : 6 077
    Points : 17 180
    Points
    17 180
    Par défaut
    Salut

    Set NewEnum = pCol.[_NewEnum] à mon avis, le premier caractère, _ de la propriété de ta classe n'est pas autorisée sous VB6.
    Soyez sympa, pensez -y
    Balises[CODE]...[/CODE]
    Balises[CODE=NomDuLangage]...[/CODE] quand vous mettez du code d'un autre langage que celui du forum ou vous postez.
    Balises[C]...[/C] code intégré dans une phrase.
    Balises[C=NomDuLangage]...[/C] code intégré dans une phrase quand vous mettez du code d'un autre langage que celui du forum ou vous postez.
    Le bouton en fin de discussion, quand vous avez obtenu l'aide attendue.
    ......... et pourquoi pas, pour remercier, un pour celui/ceux qui vous ont dépannés.
    👉 → → Ma page perso sur DVP ← ← 👈

  4. #4
    Membre à l'essai
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Avril 2016
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2016
    Messages : 22
    Points : 11
    Points
    11
    Par défaut
    Citation Envoyé par ProgElecT Voir le message
    Set NewEnum = pCol.[_NewEnum] à mon avis, le premier caractère, _ de la propriété de ta classe n'est pas autorisée sous VB6.
    Merci de ta réponse, mais ...

    https://msdn.microsoft.com/en-us/lib...(v=vs.60).aspx

    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
    Enabling For Each … Next
    
    Along with robustness, you get For Each … Next back. Once again you can delegate all the work to the Collection object, by adding the following method:
    
    ' NewEnum must return the IUnknown interface of a
    ' collection's enumerator.
    Public Function NewEnum() As IUnknown
       Set NewEnum = mcolEmployees.[_NewEnum]
    End Function
    
    The important thing you're delegating to the Collection object is its enumerator. An enumerator is a small object that knows how to iterate through the items in a collection. You can't write an enumerator object with Visual Basic, but because the Employees class is based on a Collection object, you can return the Collection object's enumerator — which naturally enough knows how to enumerate the items the Collection object is holding.
    
    The square brackets around the Collection object's _NewEnum method are necessary because of the leading underscore in the method name. This leading underscore is a convention indicating that the method is hidden in the type library. You can't name your method _NewEnum, but you can hide it in the type library and give it the procedure ID that For Each … Next requires.
    
    To hide the NewEnum method and give it the necessary procedure ID
    
        On the Tools menu, click Procedure Attributes to open the Procedure Attributes dialog box. In Name box, select the NewEnum method.
    
        Click Advanced to show the advanced features. Check Hide this member to make NewEnum hidden in the type library.
    
        In the Procedure ID box, type –4 (minus four) to give NewEnum the procedure ID required by For Each … Next. Click OK.
    
        Important   In order for your collection classes to work with For Each … Next, you must provide a hidden NewEnum method with the correct procedure ID.
    Il faut bien mettre un caractère Underscore avant NewEnum
    d'ailleurs je le fais depuis des années et ça marche nickel, mais ... pas là !

  5. #5
    Membre à l'essai
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Avril 2016
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2016
    Messages : 22
    Points : 11
    Points
    11
    Par défaut
    Youps
    Comme il fallait s'y attendre, j'avais fait une erreur !
    pCol (dans cette class là) n'était pas une collection mais une autre de mes classe qui est elle même une collection, ça s'embrouillait

    Une fois corrigé ça compile
    Vous n'êtes pas obligé de vous moquer de moi

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    197
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 197
    Points : 300
    Points
    300
    Par défaut
    Normal...
    pCol (dans cette class là) n'était pas une collection...
    En anglais ça se prononce "picol" et je te conseille d'arrêter de picoler...

    C'est bon je sors, pas taper !

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

Discussions similaires

  1. Réponses: 0
    Dernier message: 27/12/2008, 23h49
  2. [VB6-PL/SQL] Pipelined functions + ADO ?
    Par Vld44 dans le forum PL/SQL
    Réponses: 1
    Dernier message: 29/10/2008, 14h47
  3. [VB6-PL/SQL] Pipelined functions + ADO ?
    Par Vld44 dans le forum VB 6 et antérieur
    Réponses: 0
    Dernier message: 19/11/2007, 15h08
  4. VB6 creation et appel function dans dll
    Par atc666 dans le forum VB 6 et antérieur
    Réponses: 8
    Dernier message: 07/11/2007, 19h48
  5. [VB6]datareport et function somme
    Par ecranbleu27 dans le forum VB 6 et antérieur
    Réponses: 11
    Dernier message: 18/05/2006, 18h39

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