OVH Cloud OVH Cloud

Module de classe

12 réponses
Avatar
JLuc
Bonjour les lecteurs,
VB6
Voila mon petit soucis :
J'ai créer un module de classe que j'ai appelé "Machine".
Dans le module du formulaire, je déclare une variable array "globale"de
cette façon :
Dim Machines(1) As New Machine

Ensuite, sur une sélection dans un menu, je veux ajouter une entrée.
Donc je fais :

ReDim Preserve Machines(UBound(Machines) + 1)

Et là, elle me mets :
Erreur de compillation. Tableau déjà dimentionné.

Où est ce que je commets une erreur ? J'avoue que je ne vois pas ce qui
cloche :/
Si quelqu'un pouvait me sortir cette épine du pied, il aurai droit à
toute ma reconnaissance

Merci pour vos reponses

--
____
( O | O )
--
_oooO_ JLuc _Oooo_

O-\O

2 réponses

1 2
Avatar
Jean-marc
Hello,

Probablement une erreur de syntaxe puisque la solution
donnée par Driss et la mienne sont rigoureusement
identiques :o)

--
Jean-marc Noury (jean_marc_n2)
Microsoft MVP - Visual Basic
mailto: remove '_no_spam_' ;
FAQ VB: http://faq.vb.free.fr/



"JLuc" a écrit dans le message de news:

ReSalut,
J'ai enfin tester ton code, et j'ai une erreur :
91
Variable objet ou Variable de bloc with non défini

Et ceci, lors de l'affectation de valeur dans ma variable :/ . Problème
que je ne rencontre pas avec le code de Driss 8-o


Le 01/12/2006, Jean-marc a supposé :
"JLuc" a écrit dans le message de news:

Bonjour les lecteurs,
VB6
Voila mon petit soucis :
J'ai créer un module de classe que j'ai appelé "Machine".
Dans le module du formulaire, je déclare une variable array "globale"de
cette façon :
Dim Machines(1) As New Machine

Ensuite, sur une sélection dans un menu, je veux ajouter une entrée.
Donc je fais :

ReDim Preserve Machines(UBound(Machines) + 1)

Et là, elle me mets :
Erreur de compillation. Tableau déjà dimentionné.

Où est ce que je commets une erreur ? J'avoue que je ne vois pas ce qui
cloche :/
Si quelqu'un pouvait me sortir cette épine du pied, il aurai droit à
toute ma reconnaissance



Hello,

Voici une façon (assez) classique de faire:

'
' déclaration sans dimensions, sans New
'
Dim machines() As Machine

'
' première allocation
'
ReDim machines(1)
Set machines(1) = New Machine

'
' puis pour toutes les suivantes
'
Dim idxNewInstance As Long

idxNewInstance = UBound(machines) + 1
ReDim Preserve machines(idxNewInstance)
Set machines(idxNewInstance) = New Machine

C'est une façon de faire, sure et propre, qui a en
plus le mérite de fonctionner parfaitement :-)

Note: le fait de dissocier la première allocation des autres
est juste pour s'éviter un test vérifiant que machines() a au
moins un élément.



--
____
( O | O )
--
_oooO_ JLuc _Oooo_

O-O




Avatar
JLuc
Salut Jean-marc,
Probablement une erreur de syntaxe puisque la solution
donnée par Driss et la mienne sont rigoureusement
identiques :o)


Pas completement :
Dim machines() As Machine

'
' première allocation
'
ReDim machines(1)
*Set machines(1) = New Machine*

'
' puis pour toutes les suivantes
'
Dim idxNewInstance As Long

idxNewInstance = UBound(machines) + 1
ReDim Preserve machines(idxNewInstance)
*Set machines(idxNewInstance) = New Machine*
Je voyais pas trop pourquoi, mais en enlevant les *Set* , ça marche

--
____
( O | O )
--
_oooO_ JLuc _Oooo_

O-O
1 2