当我尝试读取我的结构的内存大小时,我得到了异常:
“具有 'UInt16' 类型的字段 'cbSize' 的结构的文件 I/O 无效。”
我的结构:
<StructLayout(LayoutKind.Sequential, CharSet:=CharSet.Ansi, Pack:=1)>
Public Structure MyStructure
Public V1 As UInt16
<MarshalAs(UnmanagedType.ByValTStr, SizeConst:=30)> _
Public V2 As String
Public V3 As Integer
<MarshalAs(UnmanagedType.ByValTStr, SizeConst:=256)> _
Public V4 As String
Public V5 As Byte
Public V6 As Byte
Public V7 As UInt16
Public V8 As UInt16
Public V9 As UInt16
Public V10 As Integer
Public V11 As Integer
<MarshalAs(UnmanagedType.ByValTStr, SizeConst:=8)> _
Public V12 As String
End Structure
我写了一个函数来计算每个 Len(Vxx) 的值。此功能有效,但我得到了错误的值......
size = Len(V1) + Len(V2) + Len(V3) ....
当我将值类型更改为 Int16 时,Len(结构)没有问题。
现在我的问题是:为什么它不适用于 UInt16?
和
有什么方法可以使用 UInt16 并从 Len() 获得正确的值?
谢谢你的建议。