我们的客户需要将数据从结构中移动到字符串中,以便可以将其运送到大型机。我们进来的过程基本上是将数据从字符串编组到结构中,这部分很容易......
我现在正试图做相反的事情,但遇到了一些困难。这是我正在使用的测试结构。
<StructLayout(LayoutKind.Sequential, CharSet:=CharSet.Unicode)> _
Public Structure Contact
<MarshalAs(UnmanagedType.ByValTStr, SizeConst:=50)> _
Public Address As String
<MarshalAs(UnmanagedType.ByValTStr, SizeConst:=20)> _
Public FirstName As String
<MarshalAs(UnmanagedType.ByValTStr, SizeConst:=20)> _
Public LastName As String
<MarshalAs(UnmanagedType.ByValTStr, SizeConst:=12)> _
Public PhoneNumber As String
End Structure
这是我正在使用的测试方法:
Public Sub TestContactToString()
Dim contact As New Contact
contact.Address = "123 Main st."
contact.FirstName = "Bob"
contact.LastName = "Builder"
contact.PhoneNumber = "613-828-1233"
Dim unmanagedAddress As IntPtr = Marshal.AllocHGlobal(Marshal.SizeOf(contact))
Marshal.StructureToPtr(contact, unmanagedAddress, True)
Dim result As String = Marshal.PtrToStringUni(unmanagedAddress)
Marshal.FreeHGlobal(unmanagedAddress)
unmanagedAddress = IntPtr.Zero
End Sub
现在结果变量只得到结构“地址”中的第一个字段......看起来指针很多没有分配足够的空间?想知道如何将其余数据放入字符串中...
任何帮助将不胜感激!
谢谢你。