Bonjour,

Je me retrouve face un problème qui se mort la queue quand j'essaye de trouver la solution.

J'ai un structure contenant un tableau de structure:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
public struct Header_t{
        public UInt16 usSignature;
        public UInt16 usVersion;}

public struct Definition_Struct{
        public UInt16 Var1;
        public static Header_t[] tab_header1 = new Header_t[13];
        public UInt16 Var2;
        public static Header_t[] tab_header2 = new Header_t[4];}

Definition_Struct MaStruct;
Depuis un fichier binaire contenant les valeurs de la struture, je les convertis en tableau de bytes: (binaire --> ArrayBytes)

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
FileStream monFlux = new FileStream("fichierbinaire.bin", FileMode.OpenOrCreate);
BinaryReader Reader = new BinaryReader(monFlux);

Byte[] value = new Byte[monFlux.Length];
value = Reader.ReadBytes(value.Length);
Ayant mes données en brutes dans le tableau value, je les injecte dans ma structure en utilisant la méthode Marshall.PtrToStructure
: (ArrayBytes --> MaStruct)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
GCHandle handle = GCHandle.Alloc(value, GCHandleType.Pinned);
MaStruct = (T)Marshal.PtrToStructure(handle.AddrOfPinnedObject(), typeof(Definition_Struct));
handle.Free();
Cela fonctionne qu'à moitié, car seuls les variables non statiques sont remplies et les tableaux ne sont pas assignés.
Cela vient du fait qu'ils soient en static, mais s'ils ne le sont pas, impossible de compiler.

Après voir essayer diverses possibilités (class au lieu de structure) je me retrouve bloquer.

Auriez vous idée de là où le bât blesse ??

Merci