OVH Cloud OVH Cloud

Gestion de classes

15 réponses
Avatar
Julien
Bonjour à tous,
dans tous les bons manuels qui expliquent les classes on trouve l'exemple de
la classe "Personne" contenant 2 propriétés "Nom et Prénom".
Si je créé cette classe dans mon projet mais que je désire gérer 20
personnes, à chaque nvlle connection, je créé une nvlle classe, comment puis
savoir par la suite si "Mr Paul MARTIN" est deja connecté ou nom ?

En clair, suis-je obliger de créer un tableau de classe pour savoir où j'en
suis dans mes classes ?

Merci pour vos lumières !
a+

5 réponses

1 2
Avatar
Julien
Oui, j'ai bien écrit ceci :

Dim MonDico As TerminalDictionnary
MonDico.Add(...)

Qu'est-ce qui cloche ?
En fait pour régler mon pb j'ai ajouter des "shared" dans la déclaration des
variables de ma classe "forme" (précisément là où il est écrit de ne pas
modifier le code !(je l'ai vu qu'après !!)).
Docn je suis dans la m***e pasque mes contrôle et activeX ont disparus de
mes déclarations et n'apparaissent plus sur ma forme (graphiquement)....
Heeelllppppppp !

Merci pour votre aide !



"Patrick Philippot" a écrit dans le
message de news:
Patrick Philippot wrote:
> Un doute m'assaille soudainement: vous instanciez bien le dictionnaire
> avec un New TerminalDictionnary avant d'essayer d'utiliser Add? Vous
> n'auriez pas écrit quelque chose comme:
>
> Dim MonDico As TerminalDictionnary
>
> MonDico.Add(...) ?

Ou bien (pire :-)) ) TerminalDictionnary.Add(...)?

--
Patrick Philippot - Microsoft MVP
MainSoft Consulting Services
www.mainsoft.fr




Avatar
Julien
Comment puis-je regénéré tout automatiquement ?

Merci



"Patrick Philippot" a écrit dans le
message de news:
Patrick Philippot wrote:
> Un doute m'assaille soudainement: vous instanciez bien le dictionnaire
> avec un New TerminalDictionnary avant d'essayer d'utiliser Add? Vous
> n'auriez pas écrit quelque chose comme:
>
> Dim MonDico As TerminalDictionnary
>
> MonDico.Add(...) ?

Ou bien (pire :-)) ) TerminalDictionnary.Add(...)?

--
Patrick Philippot - Microsoft MVP
MainSoft Consulting Services
www.mainsoft.fr




Avatar
Julien
En fait, j'ai une forme (avec des contrôles divers, un dataset et un
activeX) et un module.
J'aimerias depuis les fonctions de mon module accéder auxcontrôles de ma
forme.
Pour le dataset, je le passe en paramètre de ma fonction, comme ceci :

-----------------------------
public function MaFonction(byval Mydataset as dateset)
'Traitement sur le dataset
sub
-----------------------------
public class Form1
private dtst as dataset
public sub Button_click
MaFonction(dtst)
end sub
end class
-----------------------------

ça fonctionne.

Mais mon activeX, lui ne peut pas être paramètre d'une fonction ?
Visual studio le refuse.

Que faire ?

Merci


"Julien" a écrit dans le message de
news:cqr98v$165f$
Comment puis-je regénéré tout automatiquement ?

Merci



"Patrick Philippot" a écrit dans le
message de news:
> Patrick Philippot wrote:
> > Un doute m'assaille soudainement: vous instanciez bien le dictionnaire
> > avec un New TerminalDictionnary avant d'essayer d'utiliser Add? Vous
> > n'auriez pas écrit quelque chose comme:
> >
> > Dim MonDico As TerminalDictionnary
> >
> > MonDico.Add(...) ?
>
> Ou bien (pire :-)) ) TerminalDictionnary.Add(...)?
>
> --
> Patrick Philippot - Microsoft MVP
> MainSoft Consulting Services
> www.mainsoft.fr
>
>




Avatar
Patrick Philippot
Julien wrote:
Oui, j'ai bien écrit ceci :

Dim MonDico As TerminalDictionnary
MonDico.Add(...)

Qu'est-ce qui cloche ?



Il va vous falloir relire un peu la littérature sur .Net car des notions
essentielles ne me semblent pas bien assimilées :-) . Un type référence
(comme une classe) ne peut pas être utilisé sans être instancié via un
New. On ne peut utiliser directement sans New que les types valeur
(scalaires - comme integer -ou structures). Donc:

Dim MonDico As *New* TerminalDictionnary
MonDico.Add(...)

Par contre si MaStruct est une structure, je peux écrire directement:

Dim Toto As MaStruct
Toto.MaProp = ...

Ceci est possible car une structure est un type valeur et est allouée
sur la pile alors qu'un type référence est toujours alloué sur le tas
(heap) et doit donc être explicitement instancié via New.

Évidemment, si vous crééz une méthode Shared, elle peut être utilisée
sans aucune instance de la classe mais ses méthodes n'ont pas accès aux
données et méthodes non statiques (non shared) de la classe. Dans votre
cas, tout mettre en shared pour régler ce problème est bien sûr une
erreur.

--
Patrick Philippot - Microsoft MVP
MainSoft Consulting Services
www.mainsoft.fr
Avatar
Julien
en effet, pardon, j'avais bien écrit "...as New...".
J'ai réussit à reprendre le dessus sur mes bugs, la base de mon application
est à présent stable, je vais pouvoir développer mes écrans de terminaux
serénement...

Merci pour votre aide, et surrement à bientôt...

Julien


"Patrick Philippot" a écrit dans le
message de news:
Julien wrote:
> Oui, j'ai bien écrit ceci :
>
> Dim MonDico As TerminalDictionnary
> MonDico.Add(...)
>
> Qu'est-ce qui cloche ?

Il va vous falloir relire un peu la littérature sur .Net car des notions
essentielles ne me semblent pas bien assimilées :-) . Un type référence
(comme une classe) ne peut pas être utilisé sans être instancié via un
New. On ne peut utiliser directement sans New que les types valeur
(scalaires - comme integer -ou structures). Donc:

Dim MonDico As *New* TerminalDictionnary
MonDico.Add(...)

Par contre si MaStruct est une structure, je peux écrire directement:

Dim Toto As MaStruct
Toto.MaProp = ...

Ceci est possible car une structure est un type valeur et est allouée
sur la pile alors qu'un type référence est toujours alloué sur le tas
(heap) et doit donc être explicitement instancié via New.

Évidemment, si vous crééz une méthode Shared, elle peut être utilisée
sans aucune instance de la classe mais ses méthodes n'ont pas accès aux
données et méthodes non statiques (non shared) de la classe. Dans votre
cas, tout mettre en shared pour régler ce problème est bien sûr une
erreur.

--
Patrick Philippot - Microsoft MVP
MainSoft Consulting Services
www.mainsoft.fr




1 2