OVH Cloud OVH Cloud

Les class

4 réponses
Avatar
Ayanami
Bonjour,

J'ai fait ca :

Class Ordi
Public Score As Integer = 0
Public ListeTheme() As Categorie
End Class

Class Categorie
Public ReponseNombre As Integer = 0
Public LigneNumero() As Integer
Public ReponseId() As Integer
Public ReponseTexte() As String
Public ReponseEtat() As Integer
End Class

pour pouvoir appeler ca :
Dim Ordi1 As New Ordi()
Label.Text = Ordi1.ListeTheme(0).ReponseNombre.toString()

Evidemment ca ne fonctionne pas - je ne viendrai pas pleurer ;) -

Comment dois-je écrire mon code ?
Merci d'avance !

4 réponses

Avatar
Fabrice Bois
Lors de la création de l'instance d'Ordi, son attribut ListeItem, tableau de
de catégorie, a une taille de 0. Il faut donc redimensionner le tableau (je
crois que c'est redim(ListeTheme, 1)) avant d'accéder à ses valeur. Sinon,
l'erreur générer est une erreur d'index.

"Ayanami" a écrit dans le message de
news:
Bonjour,

J'ai fait ca :

Class Ordi
Public Score As Integer = 0
Public ListeTheme() As Categorie
End Class

Class Categorie
Public ReponseNombre As Integer = 0
Public LigneNumero() As Integer
Public ReponseId() As Integer
Public ReponseTexte() As String
Public ReponseEtat() As Integer
End Class

pour pouvoir appeler ca :
Dim Ordi1 As New Ordi()
Label.Text = Ordi1.ListeTheme(0).ReponseNombre.toString()

Evidemment ca ne fonctionne pas - je ne viendrai pas pleurer ;) -

Comment dois-je écrire mon code ?
Merci d'avance !


Avatar
Ayanami
On m'a conseillé de transformer comme suit :

Class Ordi
Public Score As Integer = 0
Private _listTheme(7) As Categorie
Public Property ListeTheme() As Categorie()
Get
_listTheme(0) = New Categorie
_listTheme(1) = New Categorie
_listTheme(2) = New Categorie
_listTheme(3) = New Categorie
_listTheme(4) = New Categorie
_listTheme(5) = New Categorie
_listTheme(6) = New Categorie
Return _listTheme
End Get
Set(ByVal value As Categorie())
_listTheme = value
End Set
End Property

End Class

ca marche bien ;)
Merci !



"Fabrice Bois" a écrit :

Lors de la création de l'instance d'Ordi, son attribut ListeItem, tableau de
de catégorie, a une taille de 0. Il faut donc redimensionner le tableau (je
crois que c'est redim(ListeTheme, 1)) avant d'accéder à ses valeur. Sinon,
l'erreur générer est une erreur d'index.

"Ayanami" a écrit dans le message de
news:
> Bonjour,
>
> J'ai fait ca :
>
> Class Ordi
> Public Score As Integer = 0
> Public ListeTheme() As Categorie
> End Class
>
> Class Categorie
> Public ReponseNombre As Integer = 0
> Public LigneNumero() As Integer
> Public ReponseId() As Integer
> Public ReponseTexte() As String
> Public ReponseEtat() As Integer
> End Class
>
> pour pouvoir appeler ca :
> Dim Ordi1 As New Ordi()
> Label.Text = Ordi1.ListeTheme(0).ReponseNombre.toString()
>
> Evidemment ca ne fonctionne pas - je ne viendrai pas pleurer ;) -
>
> Comment dois-je écrire mon code ?
> Merci d'avance !





Avatar
Fabrice Bois
Effectivement, c'est la solution idéale si tu connais par avance ton nombre
de catégorie. En ce cas, tu peux déclarer la taille de ton tableau.
Par contre, si tu a plus de 7 catégories, tu retrouveras ton erreur de
départ, et tu devras redéfinir la taille du tableau de manière dynamique.

"Ayanami" a écrit dans le message de
news:
On m'a conseillé de transformer comme suit :

Class Ordi
Public Score As Integer = 0
Private _listTheme(7) As Categorie
Public Property ListeTheme() As Categorie()
Get
_listTheme(0) = New Categorie
_listTheme(1) = New Categorie
_listTheme(2) = New Categorie
_listTheme(3) = New Categorie
_listTheme(4) = New Categorie
_listTheme(5) = New Categorie
_listTheme(6) = New Categorie
Return _listTheme
End Get
Set(ByVal value As Categorie())
_listTheme = value
End Set
End Property

End Class

ca marche bien ;)
Merci !



"Fabrice Bois" a écrit :

Lors de la création de l'instance d'Ordi, son attribut ListeItem, tableau
de
de catégorie, a une taille de 0. Il faut donc redimensionner le tableau
(je
crois que c'est redim(ListeTheme, 1)) avant d'accéder à ses valeur.
Sinon,
l'erreur générer est une erreur d'index.

"Ayanami" a écrit dans le message de
news:
> Bonjour,
>
> J'ai fait ca :
>
> Class Ordi
> Public Score As Integer = 0
> Public ListeTheme() As Categorie
> End Class
>
> Class Categorie
> Public ReponseNombre As Integer = 0
> Public LigneNumero() As Integer
> Public ReponseId() As Integer
> Public ReponseTexte() As String
> Public ReponseEtat() As Integer
> End Class
>
> pour pouvoir appeler ca :
> Dim Ordi1 As New Ordi()
> Label.Text = Ordi1.ListeTheme(0).ReponseNombre.toString()
>
> Evidemment ca ne fonctionne pas - je ne viendrai pas pleurer ;) -
>
> Comment dois-je écrire mon code ?
> Merci d'avance !







Avatar
Etienne
Tu peux utiliser le constructeur pour passer la taille du tableau si tu la
connais à ce moment là, sinon tu passes la valeur dans une propriété adéquate.

"Fabrice Bois" a écrit :

Effectivement, c'est la solution idéale si tu connais par avance ton nombre
de catégorie. En ce cas, tu peux déclarer la taille de ton tableau.
Par contre, si tu a plus de 7 catégories, tu retrouveras ton erreur de
départ, et tu devras redéfinir la taille du tableau de manière dynamique.

"Ayanami" a écrit dans le message de
news:
> On m'a conseillé de transformer comme suit :
>
> Class Ordi
> Public Score As Integer = 0
> Private _listTheme(7) As Categorie
> Public Property ListeTheme() As Categorie()
> Get
> _listTheme(0) = New Categorie
> _listTheme(1) = New Categorie
> _listTheme(2) = New Categorie
> _listTheme(3) = New Categorie
> _listTheme(4) = New Categorie
> _listTheme(5) = New Categorie
> _listTheme(6) = New Categorie
> Return _listTheme
> End Get
> Set(ByVal value As Categorie())
> _listTheme = value
> End Set
> End Property
>
> End Class
>
> ca marche bien ;)
> Merci !
>
>
>
> "Fabrice Bois" a écrit :
>
>> Lors de la création de l'instance d'Ordi, son attribut ListeItem, tableau
>> de
>> de catégorie, a une taille de 0. Il faut donc redimensionner le tableau
>> (je
>> crois que c'est redim(ListeTheme, 1)) avant d'accéder à ses valeur.
>> Sinon,
>> l'erreur générer est une erreur d'index.
>>
>> "Ayanami" a écrit dans le message de
>> news:
>> > Bonjour,
>> >
>> > J'ai fait ca :
>> >
>> > Class Ordi
>> > Public Score As Integer = 0
>> > Public ListeTheme() As Categorie
>> > End Class
>> >
>> > Class Categorie
>> > Public ReponseNombre As Integer = 0
>> > Public LigneNumero() As Integer
>> > Public ReponseId() As Integer
>> > Public ReponseTexte() As String
>> > Public ReponseEtat() As Integer
>> > End Class
>> >
>> > pour pouvoir appeler ca :
>> > Dim Ordi1 As New Ordi()
>> > Label.Text = Ordi1.ListeTheme(0).ReponseNombre.toString()
>> >
>> > Evidemment ca ne fonctionne pas - je ne viendrai pas pleurer ;) -
>> >
>> > Comment dois-je écrire mon code ?
>> > Merci d'avance !
>>
>>
>>