OVH Cloud OVH Cloud

Propriété tableau

5 réponses
Avatar
Patrice Henrio
Comment dans une classe déclarée une propriété comme un tableau
(soit de dimension connue, en multidimension, de type connu, de type
utilisateur, de dimension inconnue et surtout distincte pour chaque instance
de la classe .. etc)
Merci de votre aide, je n'ai rien trouvé d'intéressant dans mes ouvrages ou
dans la MSDN.

5 réponses

Avatar
François Picalausa
Hello,

Il te suffit d'avoir deux argumùents pour ta propriété:

Public Property Get ValeurTableau(X As long, Y As Long) As Long
ValeurTableau = MonTableau(X,Y)
End If

Public Property Let ValeurTableau(X As long, Y As Long, NewValue As Long)
MonTableau(X,Y) = NewValue
End If

Les collections sont un autre exemple de propriété "tableau" avec leur Item
et la propriété Count permet alors de déterminer les dimensions du
"tableau".

--
François Picalausa (MVP VB)
http://faq.vb.free.fr --- http://msdn.microsoft.com
http://apisvb.europe.webmatrixhosting.net

"Patrice Henrio" a écrit dans le
message de news:
Comment dans une classe déclarée une propriété comme un tableau
(soit de dimension connue, en multidimension, de type connu, de type
utilisateur, de dimension inconnue et surtout distincte pour chaque
instance de la classe .. etc)
Merci de votre aide, je n'ai rien trouvé d'intéressant dans mes
ouvrages ou dans la MSDN.


Avatar
Dans un module de classe :

Private TbLib() as string

Public Property Get Lib(byval Index as long) as string
Lib = TbLib(Index)
End property

C'est tout

Jean


-----Message d'origine-----
Comment dans une classe déclarée une propriété comme un


tableau
(soit de dimension connue, en multidimension, de type


connu, de type
utilisateur, de dimension inconnue et surtout distincte


pour chaque instance
de la classe .. etc)
Merci de votre aide, je n'ai rien trouvé d'intéressant


dans mes ouvrages ou
dans la MSDN.


.



Avatar
Patrice Henrio
Je ne comprends pas très bien ce que tu m'écris
Les objets de ma classe sont décrits (entre autre) par un tableau de cinq
lignes et cinq colonnes de booléens
Je souhaite avoir une propriété T avec

Private mVarT(1 to 5, 1 to 5) as Boolean

Public Property Let T(vData as Variant)
If isArray vData then
mVarT=vData
End If
End Property

Public Property Get T() as Variant
T=mVarT
End Property

Mais le compilateur me dit que c'est impossible

"François Picalausa" a écrit dans le message de
news:eLEq$
Hello,

Il te suffit d'avoir deux argumùents pour ta propriété:

Public Property Get ValeurTableau(X As long, Y As Long) As Long
ValeurTableau = MonTableau(X,Y)
End If

Public Property Let ValeurTableau(X As long, Y As Long, NewValue As Long)
MonTableau(X,Y) = NewValue
End If

Les collections sont un autre exemple de propriété "tableau" avec leur


Item
et la propriété Count permet alors de déterminer les dimensions du
"tableau".

--
François Picalausa (MVP VB)
http://faq.vb.free.fr --- http://msdn.microsoft.com
http://apisvb.europe.webmatrixhosting.net

"Patrice Henrio" a écrit dans le
message de news:
> Comment dans une classe déclarée une propriété comme un tableau
> (soit de dimension connue, en multidimension, de type connu, de type
> utilisateur, de dimension inconnue et surtout distincte pour chaque
> instance de la classe .. etc)
> Merci de votre aide, je n'ai rien trouvé d'intéressant dans mes
> ouvrages ou dans la MSDN.




Avatar
François Picalausa
Hello,

Les objets de ma classe sont décrits (entre autre) par un tableau de
cinq lignes et cinq colonnes de booléens



Est-ce que tu as réellement besoin de récupérer un tableau ou est ce que tu
peux récupérer les valeurs indépendament?

Dans le second cas voici ce que je voulais expliquer dans mon premier post:
Private mVarT(1 to 5, 1 to 5) as Boolean

Public Property Get T(X As Byte, Y As Byte) As Boolean
If X > 5 Or Y > 5 Or X < 1 Or Y < 1 Then
Err.Raise 9 'Indice en dehors de la plage
Else
T = mVarT(X,Y)
End If
End Property

Public Property Let T(X As Byte, Y As Byte, NewValue As Boolean)
If X > 5 Or Y > 5 Or X < 1 Or Y < 1 Then
Err.Raise 9 'Indice en dehors de la plage
Else
mVarT(X,Y) = NewValue
End If
End Property

Et je précisais que pour un tableau dynamique, tu pourrais avoir une
propriété comme count pour les collections (basée sur lboud et ubound)...

--
François Picalausa (MVP VB)
http://faq.vb.free.fr --- http://msdn.microsoft.com
http://apisvb.europe.webmatrixhosting.net

"Patrice Henrio" a écrit dans le
message de news:
Je ne comprends pas très bien ce que tu m'écris
Les objets de ma classe sont décrits (entre autre) par un tableau de
cinq lignes et cinq colonnes de booléens
Je souhaite avoir une propriété T avec

Private mVarT(1 to 5, 1 to 5) as Boolean

Public Property Let T(vData as Variant)
If isArray vData then
mVarT=vData
End If
End Property

Public Property Get T() as Variant
T=mVarT
End Property

Mais le compilateur me dit que c'est impossible

"François Picalausa" a écrit dans le message de
news:eLEq$
Hello,

Il te suffit d'avoir deux argumùents pour ta propriété:

Public Property Get ValeurTableau(X As long, Y As Long) As Long
ValeurTableau = MonTableau(X,Y)
End If

Public Property Let ValeurTableau(X As long, Y As Long, NewValue As
Long) MonTableau(X,Y) = NewValue
End If

Les collections sont un autre exemple de propriété "tableau" avec
leur Item et la propriété Count permet alors de déterminer les
dimensions du "tableau".

--
François Picalausa (MVP VB)
http://faq.vb.free.fr --- http://msdn.microsoft.com
http://apisvb.europe.webmatrixhosting.net

"Patrice Henrio" a écrit dans
le message de news:
Comment dans une classe déclarée une propriété comme un tableau
(soit de dimension connue, en multidimension, de type connu, de type
utilisateur, de dimension inconnue et surtout distincte pour chaque
instance de la classe .. etc)
Merci de votre aide, je n'ai rien trouvé d'intéressant dans mes
ouvrages ou dans la MSDN.






Avatar
Patrice Henrio
J'ai vraiment besoin de récupérer et de passer un tableau.
Pour l'instant j'ai triché en utilisant un string qui contient l'ensemble
des valeurs en 0 et 1
Il s'agit d'un dessin pour lequel certaines cases sont coloriées et d'autres
non, par exemple un L est déterminé par un rectangle de 4 lignes et deux
colonnes à l'intérieur de mon dessin de 5x5
Je passe donc la chaîne "4x210101011"
La property let interprète la chaîne et remplit les cases du tableau 5x5
La property get renvoie le tableau, mais en fait je n'en ai pas besoin car
le traitement sur le tableau est interne à la classe.



"François Picalausa" a écrit dans le message de
news:%
Hello,

> Les objets de ma classe sont décrits (entre autre) par un tableau de
> cinq lignes et cinq colonnes de booléens

Est-ce que tu as réellement besoin de récupérer un tableau ou est ce que


tu
peux récupérer les valeurs indépendament?

Dans le second cas voici ce que je voulais expliquer dans mon premier


post:
Private mVarT(1 to 5, 1 to 5) as Boolean

Public Property Get T(X As Byte, Y As Byte) As Boolean
If X > 5 Or Y > 5 Or X < 1 Or Y < 1 Then
Err.Raise 9 'Indice en dehors de la plage
Else
T = mVarT(X,Y)
End If
End Property

Public Property Let T(X As Byte, Y As Byte, NewValue As Boolean)
If X > 5 Or Y > 5 Or X < 1 Or Y < 1 Then
Err.Raise 9 'Indice en dehors de la plage
Else
mVarT(X,Y) = NewValue
End If
End Property

Et je précisais que pour un tableau dynamique, tu pourrais avoir une
propriété comme count pour les collections (basée sur lboud et ubound)...

--
François Picalausa (MVP VB)
http://faq.vb.free.fr --- http://msdn.microsoft.com
http://apisvb.europe.webmatrixhosting.net

"Patrice Henrio" a écrit dans le
message de news:
> Je ne comprends pas très bien ce que tu m'écris
> Les objets de ma classe sont décrits (entre autre) par un tableau de
> cinq lignes et cinq colonnes de booléens
> Je souhaite avoir une propriété T avec
>
> Private mVarT(1 to 5, 1 to 5) as Boolean
>
> Public Property Let T(vData as Variant)
> If isArray vData then
> mVarT=vData
> End If
> End Property
>
> Public Property Get T() as Variant
> T=mVarT
> End Property
>
> Mais le compilateur me dit que c'est impossible
>
> "François Picalausa" a écrit dans le message de
> news:eLEq$
>> Hello,
>>
>> Il te suffit d'avoir deux argumùents pour ta propriété:
>>
>> Public Property Get ValeurTableau(X As long, Y As Long) As Long
>> ValeurTableau = MonTableau(X,Y)
>> End If
>>
>> Public Property Let ValeurTableau(X As long, Y As Long, NewValue As
>> Long) MonTableau(X,Y) = NewValue
>> End If
>>
>> Les collections sont un autre exemple de propriété "tableau" avec
>> leur Item et la propriété Count permet alors de déterminer les
>> dimensions du "tableau".
>>
>> --
>> François Picalausa (MVP VB)
>> http://faq.vb.free.fr --- http://msdn.microsoft.com
>> http://apisvb.europe.webmatrixhosting.net
>>
>> "Patrice Henrio" a écrit dans
>> le message de news:
>>> Comment dans une classe déclarée une propriété comme un tableau
>>> (soit de dimension connue, en multidimension, de type connu, de type
>>> utilisateur, de dimension inconnue et surtout distincte pour chaque
>>> instance de la classe .. etc)
>>> Merci de votre aide, je n'ai rien trouvé d'intéressant dans mes
>>> ouvrages ou dans la MSDN.