有个老项目要升级,vb2转换成vb.net。
我们首先从vb2转换成vb4(16bit),然后在vb4(32bit)中调试。这主要是为了将16位程序转换成32位的。最后在转换成.net现在遇到个16位向32位转换的问题。vb4(32bit)中调试种。一个结构体,在转换后编译时提示“固定长数据或静态数据必须在64k bit以下。”。这个结构体定义的一个电文数据,所以想问问大家,能不能在不改变结构体的情况下,用最小的代价解决这个问题。各位辛苦了,多多帮忙,分数不够可以提出来。

解决方案 »

  1.   

    以下是结构体定义Type ANS_CL_SVR_IPC                                      
        MsgCode As Integer                  
        KtuIpcHd As KTU_IPC_HD              
        ClSvrHd As CL_SVR_HD                
        ClSvrData As ANS_CL_SVR_DATA        
    End Type                                
                                            
                                            
    Type KTU_IPC_HD                         
        ReqOtCode As String * 4             
        SdfmSubSysId As String * 8          
        SdfmPgmId As String * 8             
        SdfmPName As String * 15            
        SdskiPName As String * 15           
        ErrCode As Integer                  
        TimeStmp As String * 8              
        DataLen As Integer                  
    End Type                                
                                            
    Type CL_SVR_HD                          
        YokCode As String * 2               
        KcodeKbn As String * 2              
        UserId As String * 8                
        VbprgVsn As String * 5              
        KekCode As String * 2               
        ShoCode As String * 4               
        ClMsg As String * 70                
        Filler As String * 20               
        HOSTKBN As String * 2               
        ClSvrDatelen As String * 5          
    End Type                                
                                            
    Type ANS_CL_SVR_DATA                    
        AnsUsr As String * 30000            
    End Type
      

  2.   

    虽然32位的vb中对固定长数据或静态数据要求必须在64k bit以下,我把ANS_CL_SVR_DATA的定义改成“AnsUsr As String * 22357”程序编译就不出错了。但是“ANS_CL_SVR_IPC”的定义远远不到32k呀,为什么改成“AnsUsr As String * 22358”就报“固定长数据或静态数据必须在64k bit以下”这个错误呢。