这是以前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;现在需要更新最新的条码规则,有谁知道吗?
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;现在需要更新最新的条码规则,有谁知道吗?
按照GB 12904-2008标准,中国采用的商品条码共4种,EAN-13(13位)、EAN-8(8位)、UPC-A(12位)、UPC-E(8位),没有11位的标准。
http://www.makebarcode.com/images/symbologies/upca.gif
很可能是你用的条码扫描系统对UPC-A条码的识别有问题。你可以试验一下你的程序能否读到这些条码(先不校验是否合法,只是读,然后显示,看看是否正确)。