bonjour,
j'essaye d'écrire une classe qui permet de lire un fichier "à la manière" du pascal, c'est à dire permettant de lire directement des variables typées.
voici le code de ma classe :
j'utilise la classe de cette façon :
Code VB.NET : 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 Public Class TFileType Private TypeSize As Integer Private fs As FileStream Public Sub New(ByVal tSize As Integer, ByVal FileName As String) TypeSize = tSize fs = New FileStream(FileName, FileMode.Open, FileAccess.ReadWrite) End Sub Public Sub free() fs.Close() End Sub Public Function eof() As Boolean Return (fs.Position = fs.Length) End Function Function read(ByRef Buffer As Object) As Integer Return fs.Read(buffer, 0, TypeSize) End Function Public Sub write(ByRef Buffer As Object) fs.Write(Buffer, 0, TypeSize) End Sub End Class
je voudrais lire un fichier article
Code VB.NET : 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 Public Structure TArticle Dim codbar1 As Integer Dim codbar2 As Integer Dim LongueurChaine As Byte <VBFixedString(30)> Dim nom As String Dim famille As Byte Dim remise As Byte Dim prix As Integer Dim actif As Byte End Structure Const CheminFichierArticle As String = "E:\ARTICLE" Dim fa As New TFileType(46, CheminFichierArticle) Dim article as TArticle fa.read(article) fa.free()
un problème ce pose avec le méthode read ( et write ) de ma classe :
Code VB.NET : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 Function read(ByRef Buffer As Object) As Integer Return fs.Read(buffer, 0, TypeSize) End Function
la méthode read devant lire des types différents, j'utilise un buffer de type Object , mais le compilateur refuse en me disant qu'il ne peut pas transtyper un TArticle en Object
ma question :
comment faire pour passer à la méthode read une variable par référence dont le type n'est pas connu à l'avance. (par référence car la méthode read doit modifier cette variable )
merci d'avance.
Partager