Bon j'avais un problème de taille lors du parsing de ma fonction serialise()
Le problème venait de "BooleanByteWrapper"
le code faux était le suivant :
Public Class BooleanByteWrapper
Public Function BooleanByteWrapper()
Return Me
End Function
Public Shared Function setFlag(ByVal param1 As UInteger, ByVal param2 As UInteger, ByVal param3 As Boolean) As UInteger
Select Case (param2)
Case 0
If (param3) Then
param1 = param1 & 1
Else
param1 = param1 & (255 - 1)
End If
Case 1
If (param3) Then
param1 = param1 & 2
Else
param1 = param1 & 255 - 2
End If
Case 2
If (param3) Then
param1 = param1 & 4
Else
param1 = param1 & 255 - 4
End If
Case 3
If (param3) Then
param1 = param1 & 8
Else
param1 = param1 & 255 - 8
End If
Case 4
If (param3) Then
param1 = param1 & 16
Else
param1 = param1 & 255 - 16
End If
Case 5
If (param3) Then
param1 = param1 & 32
Else
param1 = param1 & 255 - 32
End If
Case 6
If (param3) Then
param1 = param1 & 64
Else
param1 = param1 & 255 - 64
End If
Case 7
If (param3) Then
param1 = param1 & 128
Else
param1 = param1 & 255 - 128
End If
Case Else
Console.WriteLine("Bytebox overflow.")
End Select
Return param1
End Function
Public Shared Function getFlag(ByVal param1 As UInteger, ByVal param2 As UInteger) As Boolean
Select Case (param2)
Case 0
Return (param1 And 1)
Case 1
Return (param1 And 2)
Case 2
Return (param1 And 4)
Case 3
Return (param1 And 8)
Case 4
Return (param1 And 16)
Case 5
Return (param1 And 32)
Case 6
Return (param1 And 64)
Case 7
Return (param1 And 128)
Case Else
Console.WriteLine("Bytebox overflow.")
End Select
Return param1
End Function
End Class
Mais Alexandre me l'a donc corrigé, et sa marche maintenant :
Public Class BooleanByteWrapper
Public Shared Function SetFlag(ByVal flag As Byte, ByVal offset As Byte, ByVal value As Boolean) As Byte
If (offset >= 8) Then
Console.WriteLine("offset must be lesser than 8")
Return Nothing
End If
Return If(value, CByte(flag Or (1 << offset)), CByte(flag And 255 - (1 << offset)))
End Function
Public Shared Function GetFlag(ByVal flag As Byte, ByVal offset As Byte) As Boolean
If (offset >= 8) Then
Console.WriteLine("offset must be lesser than 8")
Return Nothing
End If
Return (flag And CByte(1 << offset)) <> 0
End Function
End Class