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 :
En espérant avoir été clair et vous avoir donné toutes les informations.
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
Cordialement,
Nicolas
Partager