这是以前8位的计算方法
        zbtm_a1:=copy(barcode,1,1);
        zbtm_a2:=copy(barcode,3,1);
        zbtm_a3:=copy(barcode,5,1);
        zbtm_a4:=copy(barcode,7,1);
        zbtm_b1:=copy(barcode,2,1);
        zbtm_b2:=copy(barcode,4,1);
        zbtm_b3:=copy(barcode,6,1);
        zbtm_b4:=copy(barcode,8,1);
        zbtm_a:=inttostr(strtoint(zbtm_a1)+strtoint(zbtm_a2)+strtoint(zbtm_a3)+strtoint(zbtm_a4));
        zbtm_b:=inttostr(strtoint(zbtm_b1)+strtoint(zbtm_b2)+strtoint(zbtm_b3)+strtoint(zbtm_b4));
        zbtm_c:=inttostr(3*strtoint(zbtm_a)+strtoint(zbtm_b));
       if ((strtoint(zbtm_c) mod 10)<>0) then
                   begin
                    Application.MessageBox('此原条码不合法!','警告',mb_ok+MB_ICONWARNING);
                   end;现在需要更新最新的条码规则,有谁知道吗?

解决方案 »

  1.   

    骄阳方法没有改变(这东西哪能随便改呀)。
    按照GB 12904-2008标准,中国采用的商品条码共4种,EAN-13(13位)、EAN-8(8位)、UPC-A(12位)、UPC-E(8位),没有11位的标准。
      

  2.   

    那应该就是UPC-A的简化形式,UPC-A的系统字符(X12,最左边的数字)固定为0。
      

  3.   

    例子:
    http://www.makebarcode.com/images/symbologies/upca.gif
      

  4.   

    对。这应该不是软件计算校验错误的问题,就楼主在7楼给出的例子,校验码是正确的,而且符合标准的校验算法。
    很可能是你用的条码扫描系统对UPC-A条码的识别有问题。你可以试验一下你的程序能否读到这些条码(先不校验是否合法,只是读,然后显示,看看是否正确)。
      

  5.   

    你能“录入然后校验 再审核”这不都得到barcode了吗,你显示出来看看和商品上的条码是否一致,人工核对一下。