Could this be a bug in VB.NET ??

MDavidJohnson

New member
Joined
Jul 29, 2005
Messages
1
Programming Experience
10+
In VS.NET 2003 (VB.NET):
Microsoft Development Environment 2003 Version 7.1.3088
Microsoft .NET Framework 1.1 Version 1.1.4322 SP1

Here's a small piece of code which works fine:

Private Sub Button3_Click(ByVal sender _
As System.Object, ByVal e As System.EventArgs) _
Handles Button3.Click
' Convert a Decimal to an Int32 Array
' and then back to a Decimal
Dim dec1 As Decimal
Dim dec2 As Decimal
dec1 = Decimal.Parse(TextBox1.Text)
Dim i32A As Int32()
Dim i32B(4) As Int32
i32A = Decimal.GetBits(dec1)
Debug.Write(i32A(0).ToString & vbCrLf)
Debug.Write(i32A(1).ToString & vbCrLf)
Debug.Write(i32A(2).ToString & vbCrLf)
Debug.Write(i32A(3).ToString & vbCrLf)
i32B = i32A
Debug.Write(i32B(0).ToString & vbCrLf)
Debug.Write(i32B(1).ToString & vbCrLf)
Debug.Write(i32B(2).ToString & vbCrLf)
Debug.Write(i32B(3).ToString & vbCrLf)
dec2 = New Decimal(i32B)
TextBox3.Text = dec2.ToString()
End Sub
-----
Input: 43683683.368268265
-----
Debug: 497381865
10170900
0
589824
497381865
10170900
0
589824
-----
Output: 43683683.368268265
-----

And here's a similar piece which bombs and I can't figure
out why:

Private Sub Button3_Click(ByVal sender _
As System.Object, ByVal e As System.EventArgs) _
Handles Button3.Click
' Convert a Decimal to an Int32 Array
' then to an array of (unsigned) bytes
' then back to an Int32 Array
' and then back to a Decimal
Dim dec1 As Decimal
Dim dec2 As Decimal
dec1 = Decimal.Parse(TextBox1.Text)
Dim i32A As Int32()
Dim i32B(4) As Int32
i32A = Decimal.GetBits(dec1)
Debug.Write(i32A(0).ToString & vbCrLf)
Debug.Write(i32A(1).ToString & vbCrLf)
Debug.Write(i32A(2).ToString & vbCrLf)
Debug.Write(i32A(3).ToString & vbCrLf)
Dim BA As Byte()
Dim BB As Byte()
Dim BC As Byte()
Dim BD As Byte()
BA = BitConverter.GetBytes(i32A(0))
BB = BitConverter.GetBytes(i32A(1))
BC = BitConverter.GetBytes(i32A(2))
BD = BitConverter.GetBytes(i32A(3))
i32B(0) = BitConverter.ToInt32(BA, 0)
i32B(1) = BitConverter.ToInt32(BB, 0)
i32B(2) = BitConverter.ToInt32(BC, 0)
i32B(3) = BitConverter.ToInt32(BD, 0)
Debug.Write(i32B(0).ToString & vbCrLf)
Debug.Write(i32B(1).ToString & vbCrLf)
Debug.Write(i32B(2).ToString & vbCrLf)
Debug.Write(i32B(3).ToString & vbCrLf)
dec2 = New Decimal(i32B) <-- Error is Here **
TextBox3.Text = dec2.ToString()
End Sub
-----
Input: 43683683.368268265
-----
Debug: 497381865
10170900
0
589824
497381865
10170900
0
589824
-----
Output: An unhandled exception of type
'System.ArgumentException' occurred
in mscorlib.dll

Additional information: Decimal byte
array constructor requires an array
of length four containing valid
decimal bytes.
-----

But note that the Debug lines still show the Int32
arrays are identical. Any ideas?
 
Back
Top