OVH Cloud OVH Cloud

Collection d'objets

14 réponses
Avatar
Séb
Bonjour,

J'ai encore un pb dans ma transition VB6 --> VB.NET 2005 (express)

En VB6, j'avais une classe Pompe avec des propriété et méthodes.
J'avais réussi à créer directement quelque chose qui ressemblait à un
tableau :
Public pompe(1 To 25) As New pompe

Je pouvais alors appeler, plus loin dans mon programme, pompe(1).Allumer par
exemple.

Je n'arrive pas à reproduire cela en VB.NET :
Si je mets Public pompe(0 To 25) As New pompe, j'ai une erreur d'indiquant
"Arrays cannot be declared with 'New' "
et je n'arrive pas à me sortir du problème.
C'était bien pratique !

Quelqu'un peut m'aider ?

Merci d'avance,

Séb

4 réponses

1 2
Avatar
Olivier C.
Et en faisant :
Public pompes() As Pompe
pompes = new Pompe(25) {} ?

Patrice a écrit :
Le plus simple est de faire un MonTableau(i)=New MaClasse avant d'utiliser
l'objet.

Contrairement à VB6, le New n'est pas implanté en VB.NET comme voulant dire
"insérer un test avant chaque appel à l'objet et le créer si il est nothing"
mais appelle automatiquement au démarrage, le code créant explicitement
l'objet.

Donc à mon avis impossible d'initialiser à la déclaration tous les éléments
d'un tableau (peut-être en 2.0 ?)



Avatar
Séb
"Olivier C." a écrit dans le message de
news: %23EvozEv$
Et en faisant :
Public pompes() As Pompe
pompes = new Pompe(25) {} ?



Ah ben là, j'ai directement un liseré bleu sous le 1er "pompes" de la ligne
2 : declaration expected.

Séb
Avatar
Patrice
Non plus, le problème étzant qu'il faut initialiser le tableau mais aussi
chacune des cellules de ce tableau. Il suffit de le faire individuellement
avant la première utilisation d'une cellule... (comme en VB6 lorsque la
déclaration n'utilise pas new).

--
Patrice

"Séb" a écrit dans le message de
news:e7hC8Gw$

"Olivier C." a écrit dans le message


de
news: %23EvozEv$
> Et en faisant :
> Public pompes() As Pompe
> pompes = new Pompe(25) {} ?

Ah ben là, j'ai directement un liseré bleu sous le 1er "pompes" de la


ligne
2 : declaration expected.

Séb




Avatar
Séb
"Patrice" a écrit dans le message de news:
uLUqRG8$
Non plus, le problème étzant qu'il faut initialiser le tableau mais aussi
chacune des cellules de ce tableau. Il suffit de le faire individuellement
avant la première utilisation d'une cellule... (comme en VB6 lorsque la
déclaration n'utilise pas new).

--
Patrice




Bonjour,

J'ai failli vous envoyer un nouveau message vous demandant de préciser, et
je me suis souvenu de cette déclaration en 2 temps que je n'ai jamais
utilisé, sous VB6 :

Je résume donc, si ça peut intéresser quelqu'un :

Dans mon module de délaration :
Public Pompes(20) as Pompe 'Pompe est le nom de ma Classe

Dans le Form_Load :
For i = 1 to 20
Pompes(i) = New Pompe
Next i

Et là, sans souci, je peux utiliser Pompes(4).NumSortie = 75 par exemple.

C'est une solution qui a l'air de fonctionner, il y en a probablement
d'autre.
Je trouvais percsonnellement la méthode VB6 plus simple.

Merci beaucoup pour tous les conseils reçus, voilà une belle épine en
moins...

Sébastien
1 2