NHenry
Messages postés15102Date d'inscriptionvendredi 14 mars 2003StatutModérateurDernière intervention27 mars 2024
-
22 mars 2011 à 15:24
NHenry
Messages postés15102Date d'inscriptionvendredi 14 mars 2003StatutModérateurDernière intervention27 mars 2024
-
24 mars 2011 à 08:49
Bonjour,
Bien que je réponde plus aux question que je n'en pose ici, je suis arrivé sur un cas étrange, je suppose que c'est un bug de l'environnement de dev, mais si vous avez plus d'info, je suis preneur.
Soit le code suivant :
Option Explicit
Public Enum eTest
eTest_Member1
eTest_Member2
eTest_Member3
End Enum
Public Type tTest
Membre1 As Long
Membre2 As eTest
'Membre2 As Long
Chaine As String * 4
Membre3 As Long
Membre4 As Long
End Type
Public Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (Destination As Any, Source As Any, ByVal Length As Long)
Public Sub Test()
Static lStruct As tTest
Dim ltData() As Byte
ReDim ltData(0 To LenB(lStruct))
MsgBox "Essai " & LenB(lStruct) & " " & Len(lStruct)
CopyMemory ltData(0), lStruct, LenB(lStruct)
MsgBox "Reussi"
End Sub
C'est une version simplifiée de mon problème.
Le but est de convertir une structure en tableau d'octet.
Dans ce code, j'ai remplacé un Long en énumération (afin de faciliter le développement), mais j'ai un bug étrange qui n'apparait que si il y a l'énumération :
- Si le membre "Chaine" de la structure est après l'énumération, tout va bien.
- Si le membre "Chaine" est avant l'énumération, ça me crash l'EDI sans aucun message ni erreur.
Le problème ne se trouve pas dans la taille du tableau de destination, celui-ci étant dimensionné correctement.
Auriez-vous une explication, j'ai cherché sur Internet, mais je n'ai rien trouvé se rapportant à mon problème.