begin process at 2008 08 22 01:47:40
1 229 745 membres
17 nouveaux aujourd'hui
14 267 membres club

Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum.
Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

Sujet : Problème d'utilisation d'une Class [ Divers / General ] (Shucky)

Problème d'utilisation d'une Class le 07/06/2008 17:16:59

Shucky
Bonjour à tous,

Tout d'abord j'espere avoir bien choisi le thème du sujet si ce n'est pas le cas je tien à m'en excuser.

Je sollicite votre aide aujourd'hui car malgré mes recherches je ne trouve pas de réponses à ma question. J'ai un programme à faire un VB un window application j'ai donc :

Ma class form1 qui contient tout le code concernent les événements sur les boutons et autre et ma class perso voilà à quoi cela ressemble

Public Class  Form1
    'Mon code...
End Class

Public Class Liste
   'Mon code
End Class

Jusque là tous va bien mais je doit faire de façon que ma fonction liste gère aussi bien les Char, Integer ou String donc j'ai rajouté (Of ElementType) dans la déclaration de ma liste.
Je viens vers vous maintenant car lorsque j'appel ma liste dans ma Public Class Form1 cela me pose problème. Voici ce que j'ai besoin de faire

Public Class Form1
   Tableau_de_Liste(taille) As Liste(?????)
End Class

Public Class Liste (of ElementType)
   'Mon code...
End Class

En l'endroit des "????" je ne sais pas quoi mettre. En effet j'ai besoin d'un tableau qui me stock des listes aussi bien d'integer que de char ou string.
Est-ce que cela est possible au moins? Si oui comment faire? Si non comment contourner cette contrainte?

J'espere avoir été assez claire.

Je vous remercie d'avance

Shucky

Re : Problème d'utilisation d'une Class le 08/06/2008 02:50:18

Kevin.Ory
Salut Shucky,

Si tu as des Char, Integer ou String à mettre dans ta liste, le type String pourrais faire l'affaire. Le problème, c'est que tu ne pourra plus savoir de quel type était ta valeur avant de l'ajouter à la liste, car toute seront convertie en String. Par contre, si tu stoque tes valeurs sous forme d'Object, tu pourra le faire:

    Private Liste As New List(Of Object)

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Liste.Add("Salut")
        Liste.Add(Chr(100))
        Liste.Add(149)
        Liste.Add(Chr(110))
        Liste.Add("123456")
        Liste.Add(123456)
        Liste.Add("5")

        For Each item As Object In Liste

            If TypeOf (item) Is System.String Then
                Console.WriteLine("String  : " & item.ToString)
            ElseIf TypeOf (item) Is System.Char Then
                Console.WriteLine("Char    : " & item.ToString)
            ElseIf TypeOf (item) Is System.Int32 Then
                Console.WriteLine("Integer : " & item.ToString)
            End If

        Next
    End Sub


Re : Problème d'utilisation d'une Class le 08/06/2008 10:50:23

Shucky
Bonjour,

En fait j'ai une combobox ou l'utilisateur choisi le type qu'il veux. J'ai déjà pensé au String mais notre prof veux qu'on fasse la différence entre les types.

J'ai aussi pensé a faire comme tu as dit

Dim Liste_liste(taille) As Liste(Of Objet) mais après ce bout de code me pause problème

                    Select Case ComboBox1.Text
                    Case "Integer"
                    Liste_liste(nombre_de_liste) = New Liste(Of Integer)
                    Case "Char"
                         Liste_liste(nombre_de_liste) = New Liste(Of Char)
                    Case "String"
                           Liste_liste(nombre_de_liste) = New Liste(Of String)
                    End Select

Mais après ça me dit qu'il ne peut pas converti Integer, Char ou String en Systeme Object

Est-ce que tu vois ce que je veux dire?

Merci d'avance.

Shucky

Re : Problème d'utilisation d'une Class le 08/06/2008 17:10:20

Kevin.Ory
D'après ton code, tu n'essaie pas de convertir un String, Integer ou Char en object, mais une liste d'Integer, String ou Char en liste d'Object.

Je ne suis pas sûr que tu procède de la bonne façon...

- Dois-tu créer une liste contenant différents types ou dois tu créer plusieurs listes chacune contenant un type différent?

- Ta classe Liste c'est quoi?




Re : Problème d'utilisation d'une Class le 08/06/2008 17:21:10

Shucky
en fait je dois créer une class liste qui peut être de plusieurs type (type choisi par l'utilisateur).

C'est pour quoi je dois faire une Public Class Liste(Of elementType)
Donc j'ai une class Liste et une seul qui prend le type choisi par l'utilisateur

Maintenant dans mon code principale je dois géré plusieurs Listes, mais je dois les gérer peut importe leurs types, c'est pour quoi je souhaite les stocker dans un tableau

J'espère avoir était clair

Merci de tes réponses

Shucky

Re : Problème d'utilisation d'une Class le 08/06/2008 17:40:12

scottmat
Membre Club
Tous dans une class !

Je pense que le plus simple serait de faire des class distincte pour chaque choix de l'utilisateur

Re : Problème d'utilisation d'une Class le 08/06/2008 17:44:42

Shucky
le problème justement c'est que le prof veux qu'on gère tout a partir d'une seule class. Mon seul problème c'est le stockage de ces class.

Re : Problème d'utilisation d'une Class le 08/06/2008 17:58:44

Kevin.Ory
"J'espère avoir était clair"
Par encore assez



Si tu dois créer plusieurs listes, chacune contenant des types différents :

Dim Tab_List(2) As IList
Tab_List(0) = New List(Of Object)
Tab_List(1) = New List(Of Object)
Tab_List(2) = New List(Of Object)

Avec ce code tu aura donc 3 listes dans lesquelles tu pourra ajouter des valeurs de n'importe quel type :

Tab_List(0).Add([Integer])
Tab_List(0).Add([String])
Tab_List(1).Add([Integer])
Tab_List(1).Add([String])
Tab_List(2).Add([Integer])
Tab_List(2).Add([String])



Si tu veux plutôt créer des listes contenant 1 seul type de donées, mais en avoir plusieurs (chacune stoquant des types différents) :

Dim Tab_List(2) As IList
Tab_List(0) = New List(Of String)
Tab_List(1) = New List(Of Integer)
Tab_List(2) = New List(Of Char)

Tu pourra donc ajouter des String à la liste Tab_List(0), des Integer à la liste Tab_List(1) et des Char à la liste Tab_List(2) :

' Si tu essai d'ajouter un autre type qu'un String à Tab_List(0), tu aura une erreur
Tab_List(0).Add([String])
Tab_List(0).Add([String2])

' Si tu essai d'ajouter un autre type qu'un Integer à Tab_List(1), tu aura une erreur
Tab_List(1).Add([Integer])
Tab_List(1).Add([Integer2])

' Si tu essai d'ajouter un autre type qu'un Char à Tab_List(2), tu aura une erreur
Tab_List(2).Add([Char])
Tab_List(2).Add([Char2])



Tu peux stoquer tes classes Liste sous forme de IList seulement si celle-ci implémentent IList (par exemple si elle sont dérivé de List)


Re : Problème d'utilisation d'une Class le 08/06/2008 18:07:25

Shucky
je ne connais pas Ilist :s

Mais dans le principe c'est bien la deuxième partie de ton explication que j'ai besoin.

Merci des efforts que tu fais pour m'aider.

Shucky

Re : Problème d'utilisation d'une Class le 08/06/2008 18:48:09

Kevin.Ory
OK

Tout d'abord, une liste "normal" dans .NET est une List(Of ...). Celle-ci impléments l'interface IList, cela te permet de stocker des listes de types différents en IList.

Donc si on résume, tu veux créer différents type de listes (liste d'integer, de string...) que tu veux stocker dans une même classe.
Autrement dit, c'est une liste de listes de différents types:

' La liste contenant les différents types de liste:
Private Lists As New List(Of IList)

' Ajout de nouveaux types de listes (liste de String et d'Integer dans ce cas):

Lists.Add(New List(Of String))
Lists.Add(New List(Of Integer))


' Ajout de nouveaux éléments aux listes. La 1ère liste est une liste de String :
Lists(0).Add("Salut")
Lists(0).Add("Bonjour")
' La 2ème liste est une liste d'Integer :
Lists(1).Add(13)
Lists(1).Add(481)

' Tu peux aussi recréer ta liste original pour faciliter sa manipulation:
Dim myStringList As List(Of String) = Lists(0)
myStringList.Add("Resalut")
myStringList.Add("ReBonjour")

' Identification du type des listes et affichage de leur contenu :
For Each List As IList In Lists
    If TypeOf (List) Is List(Of String) Then
       Console.WriteLine("Ceci est une liste de String, voici sont contenu:")
       For Each Value As String In List
           Console.WriteLine(Value)
       Next
    ElseIf
TypeOf (List) Is List(Of Integer) Then
       Console.WriteLine("Ceci est une liste de Integer")
       For Each Value As Integer In List
           Console.WriteLine(Value)
       Next
    ElseIf TypeOf (List) Is List(Of Char) Then
       Console.WriteLine("Ceci est une liste de Char")
       For Each Value As Char In List
           Console.WriteLine(Value)
       Next
    EndIf
Next

' Cela t'affiche:
' Ceci est une liste de String :
' Salut
' Bonjour
' Resalut
' ReBonjour
' Ceci est une liste de Integer :
' 13
' 481






[Page 1 Page 2]
Classé sous : problème, code, class, liste, form1

Participer à cet échange

Pub



Appels d'offres

CalendriCode

Août 2008
LMMJVSD
    123
45678910
11121314151617
18192021222324
25262728293031

VS Express FR Gratuit !

VS Express en français et 100% gratuit !

Téléchargements

Boutique

Boutique de goodies CodeS-SourceS