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 :

Génération de classe automatique ?


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2011
    Messages
    81
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2011
    Messages : 81
    Par défaut Génération de classe automatique ?
    Bonjour à vous,


    J'ai fait des recherches dessus, mais je n'ai pas trouvé de quoi me satisfaire. Donc je me tourne vers vous pour avoir plus d'informations.


    Je souhaite réaliser un programme qui va lire un fichier texte (*.txt), j'ai déjà un code qui me permet de faire ceci, mais le problème est que je dois déclarer chaque propriété dans la classe.

    Or maintenant j'en ai un nombre assez conséquent de valeur à récupérer, donc de propriété à rentrer.

    Ce que je souhaiterais faire, c'est de générer automatiquement les propriétés de la classe, à la lecture du fichier.

    Le code vient lire ligne par ligne le fichier texte. j'ai créé une fonction qui permet de lire la variable se situant entre crochés [ ]

    en code :



    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
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
     
     
     Private Sub LitFichierRApport(ByVal fichierChemin As String)
     
      Dim objStreamReader As StreamReader     'Variable pour StreamReader
            Dim strLine As String                   'Variable pour stocker les valeurs ligne par ligne
      Dim lecture1 As Integer                         'Variable qui retourne la position dans la ligne de "["
            Dim lecture2 As Integer                         'Variable qui retourne la position dans la ligne de "]"
            Dim lecture3 As Integer                         'Variable qui permet de définir la longueur entre "lecture1" et "lecture2"
    Dim comparaison As String                       'Variable qui retourne la chaine de caractère entre "lecture1" et "lecture2"
     
    '---------------------- Test ouverture fichier .txt ---------------------
     
     
            'Essai d'ouvrir le fichier .txt car il y a de la latence entre la fermeture de word et l'ouverture du fichier .txt
            '(physique lier au processeur), alors que via le StreamReader aucun latence, problème
            'Donc temps qu'on ne peut pas ouvrir le fichier on est dans la boucle, en attendant que word rend la main sur le .txt
     
            Do
                FSIsOk = IsFileOpen(ouvrirChemin)
            Loop Until FSIsOk = True
     
     
            'MsgBox(FSIsOk)
     
            'MsgBox(ouvrirChemin)
     
     
            '------------------------------ StreamReader ----------------------------
     
     
            'Ouvrir le fichier dans StreamReader.
            objStreamReader = New StreamReader(ouvrirChemin, System.Text.Encoding.Unicode)
            'MsgBox(objStreamReader)
     
     
            'lit la première ligne du fichier.
            strLine = objStreamReader.ReadLine
            'MsgBox(strLine)
     
    Do While Not strLine Is Nothing
                ligneActuelle = ligneActuelle + 1
                'Lit la ligne suivante.
                strLine = objStreamReader.ReadLine
                'MsgBox(strLine)
     
                'Première comparaison dans la ligne afin de savoir si les mots "Sens d'hélice" sont présent dans la ligne
                'Si oui le programme lance la fonction de récupération des données
     
     
                lecture1 = InStr(strLine, "[")
                lecture1 = lecture1 + 1
                lecture2 = InStr(strLine, "]")
                lecture3 = (lecture2 - lecture1)
     
                'MsgBox(lecture1 & vbNewLine & lecture2 & vbNewLine & lecture3)
     
                If lecture1 = 0 Or lecture2 = 0 Or lecture3 = 0 Then
                    comparaison = 0
                Else
                    comparaison = Mid(strLine, lecture1, lecture3)
     
    'C'est ici où ça se complique, et que le code est une indication de ce que je souhaiterais faire
                    ClassAutomatique(comparaison)
     
                End If
     
    Loop
     
    End Sub
     
     
    'Sub qui permettrais de générer automatique la classe le problème c'est que je n'arrive pas à faire (m_ & valeur)
    'c'est à dire par exemple j'ai "a" dans "valeur", donc la propiété sera "m_a"
     
    Private Sub ClassAutomatique(ByVal valeur as String)
     
    Private Class Fiche_Engrenage
     
            Private (m_ & valeur) As Single                                          
            Public Property valeur() As Single
                Get
                    Return (m_ & valeur) 
                End Get
                Set(ByVal value As Single)
                    (m_ & valeur)  = value
                End Set
            End Property
     
    End Class
    End Sub
    En espérant avoir été clair et vous avoir donné toutes les informations.


    Cordialement,
    Nicolas

  2. #2
    Membre éprouvé
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2011
    Messages
    141
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2011
    Messages : 141
    Par défaut
    J'ai un peu de mal de lire du VB...

    Mais j'ai l'impression que tu devrais jeter un oeil à la sérialization.

  3. #3
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2011
    Messages
    81
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2011
    Messages : 81
    Par défaut
    Ok ok,

    J'ai des variables dans un fichier *.txt (exemple : "a", "b", "alpha", "beta", ...), et je souhaite que la classe soit générée automatiquement en fonction des valeurs retournées lors de la lecture.

    Donc quand le programme lira "a", il devra ajouter la prorpiété "a" à la classe :

    Fiche_Engrenage.a (avec les fonctions get/set)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Private Class Fiche_Engrenage
     
            Private (m_ & valeur) As Single       'Ici valeur correspond à "a" pour réaliser "m_a"                                    
            Public Property valeur() As Single
                Get
                    Return (m_ & valeur) 
                End Get
                Set(ByVal value As Single)
                    (m_ & valeur)  = value
                End Set
            End Property
     
    End Class
    donc faire concrètement :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Private Class Fiche_Engrenage
     
            Private m_a As Single               
            Public Property a() As Single
                Get
                    Return m_a 
                End Get
                Set(ByVal value As Single)
                    m_a  = value
                End Set
            End Property
     
    End Class



    et ainsi de suite :

    Fiche_Engrenage.b
    Fiche_Engrenage.alpha
    Fiche_Engrenage.beta
    ...

    Pour m'éviter de faire la classe manuellement, comme ça en cas de changement de valeur, le programme sera capable de modifier la classe.


    Cordialement,
    Nicolas

  4. #4
    Membre émérite Avatar de -N4w4k-
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2011
    Messages
    545
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2011
    Messages : 545
    Par défaut
    Salut,

    Si je comprend bien, tu veux que ça compile ta classe à l’exécution (regarde de ce coté).
    Il y avait des inconvénients qui ne m'allaient pas dans cette solution donc j'ai pas essayé.. J'ai fini par écrire un générateur de fichier vb.net. Si ça t'intéresse je peux te mettre un exemple..

  5. #5
    Expert éminent Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 202
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 202
    Par défaut
    system.collections.generic.dictionary
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  6. #6
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2011
    Messages
    81
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2011
    Messages : 81
    Par défaut
    Oui, que le code rajoute toutes les propriétés en lisant le fichier, donc qu'il génère de façon autonome la class. Si tu as des exemples je ne suis pas contre car je ne sais pas par où attaquer le problème ...

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Création de classes et génération de code automatique
    Par TomDush dans le forum Eclipse Java
    Réponses: 0
    Dernier message: 22/02/2010, 02h06
  2. [C++ / UML] Diagramme des classes automatique
    Par poukill dans le forum C++
    Réponses: 5
    Dernier message: 26/02/2007, 11h23
  3. [POO] Génération de classe au vol
    Par Akinion dans le forum Langage
    Réponses: 4
    Dernier message: 15/12/2006, 10h11
  4. Génération de maillage automatique minimisant les triangles
    Par Akta3d dans le forum Algorithmes et structures de données
    Réponses: 9
    Dernier message: 13/09/2005, 19h53
  5. [JAXB][XSD] Problème lors de la génération des classes
    Par charlot44 dans le forum Persistance des données
    Réponses: 4
    Dernier message: 22/06/2005, 16h10

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