1 pièce(s) jointe(s)
Erreur à la compilation "Impossible d'effectuer un cast d'un objet de type 'system.compiler.class' en type"
Bonjour,
Lors de la compilation de mon projet, j'ai une erreur "Impossible d'effectuer un cast d'un objet de type 'system.compiler.class' en type 'system.compiler.struct'", et là je ne vois pas trop pourquoi.
Mon code est le suivant:
J'ai une classe de variables qui me défini une espèce de forme élémentaire de dessin:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52
| Public Class ClassDessinLadder
' Type de donnée pour le dessin des équations
Dim _TypeContact As Integer ' code du type de contact 1:NO/2:NF/0:Rien
Dim _BG As Integer ' code du dessin à gauche du contact
Dim _HG As Boolean ' code du dessin à gauche de la variable True:Trait vertical/False:Rien
Dim _Variable As String ' Adresse de la variable si elle existe
'' Constructeurs
Friend Sub New(ByVal TypeC As Integer, BasGauche As Integer, HautGauche As Integer, Var As String)
_TypeContact = TypeC
_BG = BasGauche
_HG = HautGauche
_Variable = Var
End Sub
'' Accesseurs
Property TypeContact() As Integer
Get
Return _TypeContact
End Get
Set(ByVal Valeur As Integer)
_TypeContact = Valeur
End Set
End Property
Property BasGauche() As Integer
Get
Return _BG
End Get
Set(ByVal Valeur As Integer)
_BG = Valeur
End Set
End Property
Property HautGauche() As Integer
Get
Return _HG
End Get
Set(ByVal Valeur As Integer)
_HG = Valeur
End Set
End Property
Property Variable() As String
Get
Return _Variable
End Get
Set(ByVal Valeur As String)
_Variable = Valeur
End Set
End Property
End Class |
Cette classe est appelée dans une autre classe beaucoup plus importante:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87
| Public Class ClassEquaSeq
' Cette classe definit l'ensemble des données associées à la définition des séquences du séquentiel
Protected Structure AdresseMatrice
Dim AdrV As Integer
Dim AdrH As Integer
End Structure
Protected _Equa As New List(Of String)
Protected _Num As Integer
Protected _Decode As Boolean
Protected _DessinEqua As New List(Of Dictionary(Of AdresseMatrice, ClassDessinLadder))
'' Constructeurs
Friend Sub New(ByVal Numero As Integer, ByVal Equation As String)
_Num = Numero
_Equa.Add(Equation)
_Decode = False
_DessinEqua.Add(Nothing)
End Sub
Friend Sub New()
_Num = Nothing
End Sub
'' Accesseurs
Property Numero() As Integer
Get
Return _Num
End Get
Set(ByVal Valeur As Integer)
_Num = Valeur
End Set
End Property
Property Equation(ByVal Index As Integer) As String
Get
Return _Equa(Index)
End Get
Set(ByVal Valeur As String)
_Equa(Index) = Valeur
End Set
End Property
Property Decode() As Boolean
Get
Return _Decode
End Get
Set(ByVal Valeur As Boolean)
_Decode = Valeur
End Set
End Property
ReadOnly Property DessinEqua(ByVal Index As Integer, V As Integer, H As Integer) As ClassDessinLadder
Get
Dim Adresse As New AdresseMatrice
Adresse.AdrV = V
Adresse.AdrH = H
Return _DessinEqua(Index).Item(Adresse)
End Get
End Property
'' Méthodes
Friend Sub AddEqua(ByVal Equation As String)
_Equa.Add(Equation)
_DessinEqua.Add(Nothing)
End Sub
Friend Function CountEqua() As Integer
Return _Equa.Count
End Function
Friend Sub AddLadderOpe(ByVal Index As Integer, V As Integer, H As Integer, BasGauche As Integer)
Dim Adresse As New AdresseMatrice
Adresse.AdrV = V
Adresse.AdrH = H
Dim Contact As New ClassDessinLadder(Nothing, BasGauche, Nothing, Nothing)
_DessinEqua(Index).Add(Adresse, Contact)
End Sub
Friend Sub AddLadderContact(ByVal Index As Integer, V As Integer, H As Integer, TypeContact As Integer, NomVariable As String)
Dim Adresse As New AdresseMatrice
Adresse.AdrV = V
Adresse.AdrH = H
Dim Contact As New ClassDessinLadder(TypeContact, Nothing, Nothing, NomVariable)
_DessinEqua(Index).Add(Adresse, Contact)
End Sub
Friend Sub MaJLadderOpe(ByVal Index As Integer, V As Integer, H As Integer, BasGauche As Integer, HautGauche As Boolean)
Dim Adresse As New AdresseMatrice
Adresse.AdrV = V
Adresse.AdrH = H
_DessinEqua(Index).Item(Adresse).HautGauche = HautGauche
_DessinEqua(Index).Item(Adresse).BasGauche = BasGauche
End Sub |
Bon cela a peut-être l'air un peu tordu, mais pourtant dans ma tête c'est "presque" super clair:
- je récupère dans un fichier texte plein de lignes qui sont des équations booléennes (des truc d'automaticiens avec des ET et des OU)
- La structure de ce que je récupère fait que pour une équation donnée, je peux avoir 1 numéro et une équation ou 1 numéro et une série d'équations (ça, ça explique le "_Equa As New List(Of String)")
- Ensuite j'ai tout un tas de code qui marche pas trop mal et qui me fait afficher ces équations dans un datagridview, les équations sont affichées sous forme de "texte" avec plein de trucs qui se passent quand on clique sur une partie du texte
- Bon jusqu'à ce moment de mon projet, tout allait bien et je compilais l'ensemble du code sans erreur
- Maintenant mon objectif c'est de dessiner cette équation. Du coup une équation du genre "S87.[B24+B26][R24.E144+R24.E128+R61.E145+R61.E129]=R81." doit être représentée comme ça :
Pièce jointe 518004 - Dans mon code je vais lire l'équation textuelle et la transformer en dessin (j'ai déjà le code qui marche sous excel d'où l'image). Je cherche à avoir un objet qui est le stockage de cette forme de dessin
- Au début je suis parti sur l'idée de créer une liste de tableau de 2 dimensions de taille maxi possible (les équations ont des tailles différentes qui peuvent donner des dessins plus ou moins longs et plus ou moins hauts). Bon après réflexion, je me suis dit que le coup de la liste de tableaux 2 dimensions de taille maxi (liste pour avoir un dessin par _Equa) ça ne faisait pas très langage objet
- Je décide donc de faire une classe qui contient un "carré de mon dessin" (le contact, son nom, ce qu'il faut dessiner à sa gauche immédiate): ça c'est ma ClassDessinLadder
- Ensuite pour l'utiliser facilement dans mon datagridview (et par analogie avec un tableau 2 dimensions), je le stocke dans une liste de dictionnaires où la clef est l'adresse Verticale/Horizontale du dessin, donc pour la clef je crée une structure AdresseMatrice, comme ça je peux faire toutes les opérations liées aux dictionnaires dessus.
- D'où le code dans ClassEquaSeq. Pour l'instant toutes les méthodes ne sont pas encore là mais les principales le sont.
Et là j'avoue je suis complètement sec sur le message d'erreur que j'obtient à la compilation. Je ne vois pas ce qu'il essaye de "caster".
Si quelqu'un peut me donner un petit coup de main, je suis preneur.
Merci d'avance.