(*校验函数用与13位 和8位*) function TbarcodesFrm.CodeCheck(BarCode:String;CodeLast: Integer): boolean; var Odd,Even,j,X:Integer; begin if (Length(BarCode)=8) or (Length(BarCode)=13) then begin Odd := 0; Even := 0; if Length(BarCode)=13 then begin for j := 1 to 6 do begin Odd := Odd + StrToInt(Copy(BarCode, 2 * j - 1, 1)); Even := Even + StrToInt(Copy(BarCode, 2 * j, 1)); end; end else begin for j := 1 to 3 do begin Odd := Odd + StrToInt(Copy(BarCode, 2 * j - 1, 1)); Even := Even + StrToInt(Copy(BarCode, 2 * j, 1)); end; Odd := Odd + StrToInt(Copy(BarCode,7, 1)); end; //产生校验位X X:=10 - (Odd + 3 * Even) mod 10; Result:=(X=CodeLast); end else begin Result:=False; end; end; ******************** procedure TbarcodesFrm.MFDataSetCODE_IDChange(Sender: TField); var BarCode:String; CodeLast:Integer; begin if not Sender.IsNull then begin BarCode:=Sender.AsString; CodeLast:=StrToInt(Copy(BarCode,Length(BarCode),1)); if (not CodeCheck(Sender.AsString,CodeLast)) then begin MessageDlg('条码输入错误,请重新输入.',mtWarning,[mbOk],0); // Sender.Clear; Exit; end; end; end;
function TbarcodesFrm.CodeCheck(BarCode:String;CodeLast: Integer): boolean;
var
Odd,Even,j,X:Integer;
begin
if (Length(BarCode)=8) or (Length(BarCode)=13) then
begin
Odd := 0;
Even := 0;
if Length(BarCode)=13 then
begin
for j := 1 to 6 do
begin
Odd := Odd + StrToInt(Copy(BarCode, 2 * j - 1, 1));
Even := Even + StrToInt(Copy(BarCode, 2 * j, 1));
end;
end
else
begin
for j := 1 to 3 do
begin
Odd := Odd + StrToInt(Copy(BarCode, 2 * j - 1, 1));
Even := Even + StrToInt(Copy(BarCode, 2 * j, 1));
end;
Odd := Odd + StrToInt(Copy(BarCode,7, 1));
end;
//产生校验位X
X:=10 - (Odd + 3 * Even) mod 10;
Result:=(X=CodeLast);
end
else
begin
Result:=False;
end;
end;
********************
procedure TbarcodesFrm.MFDataSetCODE_IDChange(Sender: TField);
var
BarCode:String;
CodeLast:Integer;
begin
if not Sender.IsNull then
begin
BarCode:=Sender.AsString;
CodeLast:=StrToInt(Copy(BarCode,Length(BarCode),1));
if (not CodeCheck(Sender.AsString,CodeLast)) then
begin
MessageDlg('条码输入错误,请重新输入.',mtWarning,[mbOk],0);
// Sender.Clear;
Exit;
end;
end;
end;