Hier ein Beispiel inkl. der Modulo 10 Prüfung von 2of5 Barcodes.
Dieser Filter beinhaltet folgendes:
- 1. Prüfsummen Check (bei 2of5 Barcodes)
2. Max. und Min. Wert des Barcodes (einstellbar über BcLowVal und BcHighVal)
3. Längenprüfung
4. Zudem eine Prüfung auf Barcodewiederholungen
Code: Alles auswählen
// ====================================================================
// Barcodeprüfung
// 2 of 5 interleaved (Modulo 10)
// ====================================================================
function CheckBarcode(Barcode) : Boolean;
begin
try
Summe := 0;
BcChkSum := strtoint(copy(Barcode,length(Barcode),1));
Barcode := copy(Barcode,1,length(Barcode)-1);
for i:=1 to 7 do
begin
if i mod 2 = 0
then Summe := Summe + strtoint(Barcode[i])
else Summe := Summe + (strtoint(Barcode[i]) * 3);
end;
Checksum := 10 - (Summe Mod 10);
if Checksum >= 10 then Checksum := 0;
if CheckSum = BcChkSum
then Result := true
else Result := false;
except
Result := false;
end;
end;
// ====================================================================
begin
if RecoResult > '' then
begin
BcLowVal := 0;
BcHighVal := 13999999;
BcStr := RecoResult;
RecoResult := '';
LfCr := chr($0d) + chr($0a);
BcStr := Replace(BcStr,LfCr,chr($0a));
BCStr := trim(Replace(BCStr,chr($0a),LfCr)) + LfCr;
while pos(LfCr,BcStr) > 0 do
begin
Barcode := trim(copy(BcStr,1,pos(LfCr,BcStr)-1));
delete(BcStr,1,pos(LfCr,BcStr)+1);
if length(Barcode) = 8 then
begin
try
BcInt := strtoint(Barcode);
if (BcInt >= BcLowVal) and (BcInt <= BcHighVal) then
begin
if (CheckBarcode(Barcode) = true) then
begin
if (LastRecoResult <> Barcode)
then RecoResult := Barcode;
exit;
end;
end;
except
end;
end;
end;
end;
end;
// ====================================================================