IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VB.NET Discussion :

Erreur de class non instanciée


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre Expert Avatar de hunteshiva
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Février 2010
    Messages
    1 069
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Chef de projet en SSII
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2010
    Messages : 1 069
    Par défaut Erreur de class non instanciée
    Bonjour,

    je viens de créer ma classe grâce à Pol63
    le soucis c'est qu'il me génère une erreur lors de sont utilisation...

    je déclare ma variable dans un module
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Module mdlVarPublic
        Public Essai As New clsEssai
    End Module
    et je l'utilise comme je veux:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Public Class frmMenu
     
        Private Sub btTraiterEssai_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btTraiterEssai.Click
    '....
                ' Récupération des données de l'essai
                Essai.Nom = xlsbook.Sheets("RESULTAT").range("F7").value.ToString
                Essai.Formule = xlsbook.Sheets("RESULTAT").range("C8").value.ToString
    '....
        End Sub
     
    End Class
    la ça fonctionne mais dés que je rentre dans une sous classe, c'est la qu'il plante...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
                ' Récupération des données de l'emballage
                Essai.Emballage.Nom = xlsbook.Sheets("RESULTAT").range("C9").value.ToString
    voici l'erreur qu'il me donne


    Il n'a pas hérité des class friend lors de la déclaration?

  2. #2
    Membre Expert Avatar de hunteshiva
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Février 2010
    Messages
    1 069
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Chef de projet en SSII
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2010
    Messages : 1 069
    Par défaut
    C'est bon
    *enfin pour le début uniquement*

    le problème se situait dans ma classe:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Public Class clsEssai
     
        Friend Nom, Machine, Formule As String
        Friend Emballage As New clsEmballage  ' <-- Ajouter le New
        Friend Sonde() As clsSonde            ' <-- 2nd Problème
    '...
    End Class
    en fessant New, il a bien la classe Emballage de définie.

    Seulement je n'arrive pas à l'appliquer pour mes sondes...
    il me jette parce-que c'est un tableau
    *donc je vais continuer mes recherches, si vous avez des idées, allez-y *

  3. #3
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    Citation Envoyé par hunteshiva Voir le message
    Seulement je n'arrive pas à l'appliquer pour mes sondes...
    il me jette parce-que c'est un tableau
    Dans le constructeur de ta classe (Sub New), fais une boucle qui initialise tous les éléments du tableau

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Public Sub New()
        Redim Sonde(9)
        For i = 0 To 9
            Sonde(i) = New clsSonde()
        Next
    End Sub
    Sinon il y a quelques mauvaises pratiques dans ton code...
    - il ne faut pas préfixer les noms des classes par "cls", ça n'apporte aucune information utile et ça introduit donc du "bruit" ; en plus c'est galère pour l'intellisense parce que toutes tes classes commencent pareil
    - l'encapsulation n'est pas respectée : les champs devraient toujours être privés (sauf éventuellement les champs shared readonly), il faut créer des propriétés pour y accéder. Sinon, rien n'empêche du code externe de modifier l'état interne de ta classe sans que tu puisses le contrôler et/ou l'empêcher

  4. #4
    Membre Expert Avatar de hunteshiva
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Février 2010
    Messages
    1 069
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Chef de projet en SSII
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2010
    Messages : 1 069
    Par défaut
    Merci tomlev pour les précisions,
    tu comprendra vite que c'est la première classe que je crée.
    Je développe une appli pour un bureau de R&D donc la sécurité des variables n'est pas le plus important.

    Toutefois j'ai envie de faire quelque chose de correcte, donc si tu a des exemples à me proposer pour améliorer le code je suis preneur.

    Je vais regarder pour faire une fonction dans ma Class,
    et je fait un retour rapidement.

  5. #5
    Membre Expert
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    700
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 700
    Par défaut
    Bonjour,
    peut être un début de réflexion pour tes classes imbriquées :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    Public Class clsEssai
     
        'Propriété
        Private mNom As String
        Public Property Nom() As String
            Get
                Return mNom
            End Get
            Set(ByVal Value As String)
                mNom = Value
            End Set
        End Property
        ' ...
        ' ...
        ' ...
     
        'Friend Emballage As New clsEmballage  ' <-- Ajouter le New
     
        Friend SondesList As New List(Of clsSonde)
     
        Public Sub New(ByVal ns As Integer)
            For i = 0 To ns - 1
                SondesList.Add(New clsSonde())
            Next
        End Sub
     
        '******* clsSonde ***************
        Friend Class clsSonde
     
            ' Propriété
            Private mNom As String
            Public Property Nom() As String
                Get
                    Return mNom
                End Get
                Set(ByVal Value As String)
                    mNom = Value
                End Set
            End Property
     
            ' Indexeur
            Private mTemperature As New List(Of Single)
     
            Public Property Temperature(ByVal i As Integer) As Single
                Get
                    Return mTemperature(i)
                End Get
                Set(ByVal value As Single)
                    mTemperature.Insert(i, value)
                End Set
            End Property
     
            ' Indexeur
            Private mTemp As New List(Of System.DateTime)
     
            Public Property Temp(ByVal i As Integer) As System.DateTime
                Get
                    Return mTemp(i)
                End Get
                Set(ByVal value As System.DateTime)
                    mTemp.Insert(i, value)
                End Set
            End Property
        End Class
    End Class
    En déclarant le nombre de sondes et d'enregistrements par sonde :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
        ' déclarations niveau classe formulaire (ou niveau module : Public).
        Dim nbreSondes As Integer = 3
        Dim nbrePrelevement As Integer = 6
        Dim essai As New clsEssai(nbreSondes)
    Que l'on peut appeler, genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
            ' Récupération des données de l'essai (n'importe quoi pour test)
            essai.Nom = "Nom1"
     
            For s = 0 To nbreSondes - 1
                essai.SondesList(s).Nom = "sonde n° " & s + 1
                For t = 0 To nbrePrelevement - 1
                    essai.SondesList(s).Temperature(t) = t
                    essai.SondesList(s).Temp(t) = #1/2/2003#.AddDays(t)
                Next
            Next
     
            ' Visualisation
            MessageBox.Show(essai.Nom & Environment.NewLine & _
                    essai.SondesList(2).Nom & Environment.NewLine & _
                    essai.SondesList(2).Temperature(4) & Environment.NewLine & _
                    essai.SondesList(2).Temp(4) & Environment.NewLine)

  6. #6
    Membre Expert Avatar de hunteshiva
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Février 2010
    Messages
    1 069
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Chef de projet en SSII
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2010
    Messages : 1 069
    Par défaut
    ok, merci pour vos réponses,
    j'essaye de mettre tout ça au propre dans deux semaines,
    et je posterais mes résultats.

Discussions similaires

  1. erreur Connect: Classe non enregistrée
    Par chrisbdx dans le forum SAS Base
    Réponses: 14
    Dernier message: 26/11/2020, 15h45
  2. Réponses: 11
    Dernier message: 14/02/2014, 13h29
  3. Erreur de classe non trouve sur différents projets
    Par X-plode dans le forum Glassfish et Payara
    Réponses: 3
    Dernier message: 27/11/2008, 16h23
  4. Réponses: 1
    Dernier message: 24/05/2007, 16h41
  5. Réponses: 5
    Dernier message: 04/10/2006, 15h45

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo