首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > VB Dotnet >

VB6升级到VB.net,structure如何样修改才能得到和原来一样的长度

2012-09-10 
VB6升级到VB.net,structure怎么样修改才能得到和原来一样的长度?在VB.net中写成一下形式:StructLayout(La

VB6升级到VB.net,structure怎么样修改才能得到和原来一样的长度?
在VB.net中写成一下形式:  
<StructLayout(LayoutKind.Sequential)> Public Structure Info_struct
  Dim gui_number As Byte
  Dim Version As Byte
  Dim Test_Start_Time As Date
  Dim Test_Stop_Time As Date
  Dim step_number As Int16
  Dim cycle_number As Byte
  Dim Stop_Con As Byte
  Dim Station As Int16
  Dim Current As Int16
  Dim up_v As Int16
  Dim down_v As Int16
  Dim delta_v As Int16
  Dim stop_current As Int16
  Dim set_time As Single '设定时间
  Dim end_time As Single '实际终止时间
  Dim max_voltage As Int16
  Dim min_voltage As Int16
  Dim battery_number As Int16
  Dim SubGroupNum As Int16
  Dim MaxRowSubGroup As Int16
  Dim MaxColGroup As Int16
  Dim dat_address As MyAddress_Struct
  Public cur_address() As MyAddress_Struct
  Dim FangRatio As Single
  Dim SepFlag As Int16  
  <MarshalAs(UnmanagedType.ByValArray, sizeconst:=4)> 
  Dim DingValue() As Int16
  <MarshalAs(UnmanagedType.ByValArray, sizeconst:=MAX_BATTERY_NUM - 1)> 
  Dim cursep_address As MyAddress_Struct
  <MarshalAs(UnmanagedType.ByValTStr, sizeconst:=18)> 
  Dim sign_1 As String
  <MarshalAs(UnmanagedType.ByValTStr, sizeconst:=20)> 
  Dim sign_3 As String
  End Structure
我试着用两种方法求它的长度的:
dim Temp_info as INfo_struct
方法1:marshal.sizeof(Temp_info)
  运行时弹出错误:
  未处理 System.ArgumentException
  Message=类型“bat.Module1+Info_struct”不能作为非托管结构进行封送处理;无法计算有意义的大小或偏移 量。

方法2:len(Temp_info)
  返回值太小,明显是不对的。

那我应该怎么做呢?
  


[解决办法]
[StructLayout(LayoutKind.Sequential, Pack = 1)]

热点排行