ECRIRE OU LIRE UNE STRUCTURE DANS UN FICHIER BINAIRE
cs_EBArtSoft
Messages postés4525Date d'inscriptiondimanche 29 septembre 2002StatutModérateurDernière intervention22 avril 2019
-
5 avril 2008 à 11:36
BarthOlivier
Messages postés132Date d'inscriptionmercredi 6 mars 2002StatutMembreDernière intervention27 novembre 2012
-
12 janv. 2009 à 21:09
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.
BarthOlivier
Messages postés132Date d'inscriptionmercredi 6 mars 2002StatutMembreDernière intervention27 novembre 20121 12 janv. 2009 à 21:09
J'oubliais la fonction d'appel :
Declare Function Lance Lib "USBLib" (ByVal hHandle As Integer, <MarshalAsAttribute(UnmanagedType.Struct)> ByRef pTransfer As DATA_ACQUISITION) As Integer
BarthOlivier
Messages postés132Date d'inscriptionmercredi 6 mars 2002StatutMembreDernière intervention27 novembre 20121 12 janv. 2009 à 21:04
Bonjour, petite question qui n'a rien a voir, enfin en partie quand même ...
J'essaye de faire la même chose et j'ai cette erreur :
<<Le type n'a pas pu être marshalé, car la longueur d'une instance de tableau incorporée ne correspond pas à la longueur déclarée dans la disposition.>>
EN VB6 :
Public Type DATA_ACQUISITION
Calibrage As Byte
Voie(3) As ACQUISITION_VOIE
Config As ACQUISITION_CONFIG
Trig As ACQUISITION_TRIG
End Type
EN VB.NET :
<StructLayout(LayoutKind.Sequential)> Public Structure DATA_ACQUISITION
Dim Calibrage As Byte
<MarshalAs(UnmanagedType.ByValArray, SizeConst:=12)> Dim Voie() As ACQUISITION_VOIE
<MarshalAs(UnmanagedType.ByValArray, SizeConst:=6)> Dim Config As ACQUISITION_CONFIG
<MarshalAs(UnmanagedType.ByValArray, SizeConst:=7)> Dim Trig As ACQUISITION_TRIG
'----------------------------------------------------------
Public Sub Initialize()
ReDim Voie(3)
End Sub
End Structure
Dans les structure en VB6 j'ai des byte et des long que j'ai transformé en byte et integer pour VB.NET. Visiblement ce serait la declaratation de tableau de structure (--Voie()--) qui poserai problème. Enfin je crois.
Je pensais avoir compris "en partie" la marshalisation mais alors là je suis perdu ... Si vous avez une idée
Afyn
Messages postés608Date d'inscriptionsamedi 3 août 2002StatutMembreDernière intervention22 décembre 2016 12 avril 2008 à 17:59
Et on l'a toujours ... c'est vrai
Yop
Afyn
Navedac
cs_EBArtSoft
Messages postés4525Date d'inscriptiondimanche 29 septembre 2002StatutModérateurDernière intervention22 avril 20199 11 avril 2008 à 23:12
Ouai je sais qu'on avait le probleme et on l'a toujours...
Afyn
Messages postés608Date d'inscriptionsamedi 3 août 2002StatutMembreDernière intervention22 décembre 2016 10 avril 2008 à 22:52
On avait le problème avec la structure MIDI (tu te souviens EB ?)
C'est pas simple en .NET
Yop
Afyn
Navedac
Le savoir faire des cancres du grand sud ...
istamkenitra
Messages postés42Date d'inscriptionmardi 9 décembre 2003StatutMembreDernière intervention21 mars 2009 8 avril 2008 à 13:25
sinon il y en a plusieurs sur le net... avec google ..celui la est le premier que j'ai trouver ...j'espere qu'il te sera utile
linalina84
Messages postés2Date d'inscriptionmercredi 26 mars 2008StatutMembreDernière intervention 7 avril 2008 7 avril 2008 à 19:42
je préfère qu'il soit écrit en java
Picpic10
Messages postés7Date d'inscriptionmardi 18 octobre 2005StatutMembreDernière intervention12 mai 2009 7 avril 2008 à 15:13
Istamkenitra, aurais tu un exemple qui marche avec la serialization binaire? J'ai essaye mais rien a faire... je n'y arrive pas. Et si ca resoud le probleme de la declaration des string et rend ceci plus facile, je prends ;)
3 soirs d'essais et de recherche sur le net juste pour enregistrer une structure... C'est la seule methode que j'ai reussi a faire marcher. Mais il ne faut pas exclure que je soit just un gros boulet ^^
Ps: merci pour les commentaires et pardon pour l'absence d'accent sur le message (clavier anglais).
Pour répondre à EBartSoft avec un tableau de bytes et une structure à l'intérieur d'une structure
<StructLayout(LayoutKind.Sequential)> Public Structure CDROM_TOC
<MarshalAs(UnmanagedType.ByValArray, SizeConst:=2)> Dim Length() As Byte
Dim FirstTrack As Byte
Dim LastTrack As Byte
<MarshalAs(UnmanagedType.ByValArray, sizeConst:=100)> Dim TrackData() As TRACK_DATA
End Structure
C'est pas de la tarte !!!! Mais faut faire avec
istamkenitra
Messages postés42Date d'inscriptionmardi 9 décembre 2003StatutMembreDernière intervention21 mars 2009 5 avril 2008 à 18:26
bon exemple..mais personnellement je trouve que c'est un peu compliqué (coté types de données)!! on peut faire mieux avec la serialization (xml ou binaire)
cs_EBArtSoft
Messages postés4525Date d'inscriptiondimanche 29 septembre 2002StatutModérateurDernière intervention22 avril 20199 5 avril 2008 à 11:36
Huhuh et comment ça ce passe quand c'est un tableau de "byte" a dimension fixe ?
12 janv. 2009 à 21:09
Declare Function Lance Lib "USBLib" (ByVal hHandle As Integer, <MarshalAsAttribute(UnmanagedType.Struct)> ByRef pTransfer As DATA_ACQUISITION) As Integer
12 janv. 2009 à 21:04
J'essaye de faire la même chose et j'ai cette erreur :
<<Le type n'a pas pu être marshalé, car la longueur d'une instance de tableau incorporée ne correspond pas à la longueur déclarée dans la disposition.>>
EN VB6 :
Public Type DATA_ACQUISITION
Calibrage As Byte
Voie(3) As ACQUISITION_VOIE
Config As ACQUISITION_CONFIG
Trig As ACQUISITION_TRIG
End Type
EN VB.NET :
<StructLayout(LayoutKind.Sequential)> Public Structure DATA_ACQUISITION
Dim Calibrage As Byte
<MarshalAs(UnmanagedType.ByValArray, SizeConst:=12)> Dim Voie() As ACQUISITION_VOIE
<MarshalAs(UnmanagedType.ByValArray, SizeConst:=6)> Dim Config As ACQUISITION_CONFIG
<MarshalAs(UnmanagedType.ByValArray, SizeConst:=7)> Dim Trig As ACQUISITION_TRIG
'----------------------------------------------------------
Public Sub Initialize()
ReDim Voie(3)
End Sub
End Structure
Dans les structure en VB6 j'ai des byte et des long que j'ai transformé en byte et integer pour VB.NET. Visiblement ce serait la declaratation de tableau de structure (--Voie()--) qui poserai problème. Enfin je crois.
Je pensais avoir compris "en partie" la marshalisation mais alors là je suis perdu ... Si vous avez une idée
12 avril 2008 à 17:59
Yop
Afyn
Navedac
11 avril 2008 à 23:12
10 avril 2008 à 22:52
C'est pas simple en .NET
Yop
Afyn
Navedac
Le savoir faire des cancres du grand sud ...
8 avril 2008 à 13:25
pour Picpic10 : un lien qui traite la serialisation binaire d'un classe :
http://plasserre.developpez.com/v5-8.htm
sinon il y en a plusieurs sur le net... avec google ..celui la est le premier que j'ai trouver ...j'espere qu'il te sera utile
7 avril 2008 à 19:42
7 avril 2008 à 15:13
3 soirs d'essais et de recherche sur le net juste pour enregistrer une structure... C'est la seule methode que j'ai reussi a faire marcher. Mais il ne faut pas exclure que je soit just un gros boulet ^^
Ps: merci pour les commentaires et pardon pour l'absence d'accent sur le message (clavier anglais).
5 avril 2008 à 22:04
<StructLayout(LayoutKind.Sequential)> Public Structure CDROM_TOC
<MarshalAs(UnmanagedType.ByValArray, SizeConst:=2)> Dim Length() As Byte
Dim FirstTrack As Byte
Dim LastTrack As Byte
<MarshalAs(UnmanagedType.ByValArray, sizeConst:=100)> Dim TrackData() As TRACK_DATA
End Structure
C'est pas de la tarte !!!! Mais faut faire avec
5 avril 2008 à 18:26
5 avril 2008 à 11:36