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 :

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
j'utilise la classe de cette façon :

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.