int rs20a;
            byte[] buf20a = new byte[16];
            byte[] ss20a = System.Text.Encoding.Default.GetBytes(textBox18.Text);            for (int cnt20a = 0; cnt20a < 16; cnt20a++)
            {
                buf20a[cnt20a] = ss20a[cnt20a];            }
            rs20a = ICC.ICCWrite(iSID, 8, buf20a, 16);
//不执行一下的if语句,为什么?
            Array.Clear(buf20a, 0, 16);
            if (ss20a.Length > 16)
            {
                for (int cnt20b = 0; cnt20b < 16; cnt20b++)
                {
                    buf20a[cnt20b] = ss20a[16 + cnt20b];
                }
                rs20a = ICC.ICCWrite(iSID, 9, buf20a, 16);
            }
//同上
                Array.Clear(buf20a, 0, 16);
            if (ss20a.Length > 24)
            {
                for (int cnt20c = 0; cnt20c < 16; cnt20c++)
                {
                    buf20a[cnt20c] = ss20a[24 + cnt20c];
                }
                rs20a = ICC.ICCWrite(iSID, 10, buf20a, 16);
            }
谢谢,请问为什么?怎么解决?

解决方案 »

  1.   

    rs20a = ICC.ICCWrite(iSID, 8, buf20a, 16); 
    自己写的类,无错误,
      

  2.   

    确定没执行,由于是pda程序,无法调试,只能messagebox.show来看执行到哪,show到我写的哪就不能再往下show了,求解
      

  3.   

    可能是textBox18.Text的长度<16
    另外
    如果16<ss20a.Length<=24  
    if (ss20a.Length > 16) 
                { 
                    for (int cnt20b = 0; cnt20b  < 16; cnt20b++) 
                    { 
                        buf20a[cnt20b] = ss20a[16 + cnt20b]; 
                    } 
                    rs20a = ICC.ICCWrite(iSID, 9, buf20a, 16); 
                } 
    ss20a[16 + cnt20b]出现数组越界异常
    同理 24<ss20a.Length<40 时
    ss20a[16 + cnt20b]也会出现数组越界异常
      

  4.   

    那你起码show一下ss20a.Length 是多少?你确定是大于16吗
      

  5.   

    if之前的语句出错了,用try...catch来包装看看到底是什么错误