4 votes

Comment lire une chaîne de longueur fixe en vb6 à partir d'un fichier binaire en vb.net

CONTEXTE

J'ai un vb6 qui utilisent ce logiciel particulier Type :

Type Example
    A As Integer
    B As Single
    C As String * 10
    D  As Byte
    E As String
End Type

Cette structure est entièrement sauvegardée dans un fichier binaire avec un simple " mettre " :

Dim Numfile%
Numfile = FreeFile
[...]
Put #Numfile, , example_instance
[...]

PROBLÈME

Maintenant, je veux lire ce fichier binaire à partir de vb.net (.NET Framework 4). Le problème est qu'en .net nous n'avons pas de chaînes fixes... J'ai essayé d'écrire quelque chose comme :

Structure Example
     Dim A As Short
     Dim B As Single 
     Dim C() As Char ' ---> This should replace String * 10.
     Dim D As Byte 
     Dim E As String 
End Structure

Et puis je lis le fichier avec :

Dim n as short = FreeFile()
Dim instance as Example
If FileExists(filename) Then
    FileOpen(n, filename, OpenMode.Binary, OpenAccess.Read)
    [...]        
    FileGet(n, instance)
    [...]

Mais, de toute évidence, les données originales n'ont pas été détectées correctement.

Comment puis-je lire correctement ce fichier binaire en vb.net ?

5voto

jmcilhinney Points 5862

Je vais écrire ceci comme réponse, même si je ne suis pas sûr à 100 % que ça va marcher parce que ce n'est pas quelque chose que j'ai déjà fait. Le site VBFixedString existe spécifiquement pour être utilisé dans des situations où VB6 utiliserait une longueur fixe de l'attribut String . En tant que tel, je pense qu'en déclarant votre type comme ceci :

Structure Example
     Dim A As Short
     Dim B As Single
     <VBFixedString(10)> Dim C As String
     Dim D As Byte
     Dim E As String
End Structure

devrait faire l'affaire.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X