public static bool GetRand1_Pwd11(int Flag, char PutDiv, char OutRand, char OutEndata, bool Netencryption)
        {
            if (!Netencryption)
            {
                char[] RandAndEndData = new Char[50];
                int intConnectOK = clsSJJ1009forformalchip.Meter_Formal_IdentityAuthentication(Flag, PutDiv, OutRand, OutEndata);
                CheckSMResult(intConnectOK);
                OutRand = new Char[RandAndEndData.ToString().Substring(0,16)];   //报错,目的是取RandAndEndData的前16位
                //RandAndEndData.CopyTo(0, OutRand, 0, 16);
                OutEndata = new Char[RandAndEndData.ToString().Substring(16, 16)];   //报错,目的是取RandAndEndData的16-                32位
            }
            else
            {
                OutRand = new Char[16];   //报错,目的是取新的字符串16位
                OutEndata = new Char[16];  //报错,目的是取新的字符串16位
                CheckSMResult(clsSJJ1009forformalchip.Meter_Formal_IdentityAuthentication(Flag, PutDiv, OutRand, OutEndata));
            }
            return true;
        }

解决方案 »

  1.   

    OutRand类型是char,不是char[ ]啊
    注意一下数据类型,不能乱赋值啊
      

  2.   

     OutRand = new Char[RandAndEndData.ToString().Substring(0,16)]; 
    这个即使换成char[ ],也不对.
    Substring取出来的也是string,不是char[ ],你得先赋值给string型的变量,然后再转换成char[ ]
      

  3.   


    public static bool GetRand1_Pwd11(int Flag, char PutDiv, char[] OutRand, char[] OutEndata, bool Netencryption)         {            
     if (!Netencryption)            
     {                 
    char[] RandAndEndData = new Char[50];                 
    int intConnectOK = clsSJJ1009forformalchip.Meter_Formal_IdentityAuthentication(Flag, PutDiv, OutRand, OutEndata);                 
    CheckSMResult(intConnectOK);                 
    OutRand = RandAndEndData.ToString().Substring(0,16).ToCharArray();//报错,目的是取RandAndEndData的前16位                 
    //RandAndEndData.CopyTo(0, OutRand, 0, 16);                 
    OutEndata = RandAndEndData.ToString().Substring(16,16).ToCharArray();  //报错,目的是取RandAndEndData的16-32位             
    }             
    else           
     {                
     OutRand = new Char[16];   //报错,目的是取新的字符串16位                 
    OutEndata = new Char[16];  //报错,目的是取新的字符串16位                 
    CheckSMResult(clsSJJ1009forformalchip.Meter_Formal_IdentityAuthentication(Flag, PutDiv, OutRand, OutEndata));             
    }           
      return true;         

      

  4.   

    public static bool GetRand1_Pwd11(int Flag, char PutDiv, char OutRand, char OutEndata, bool Netencryption)
    这边因为是要调用外部链接DLL文件的函数,所以不能更改,请问下针对几个报错的地方能帮忙看看如何修改吗
      

  5.   

    数据类型都没搞清楚,就开始研究调外部DLL了?
    调DLL,函数应该是写好的,你怎么还可以改代码?
    基础知识需要恶补了