14. Februar 2012 19:38
14. Februar 2012 19:46
alexanderp hat geschrieben:Hat jemand zufällig eine solche Funktion "auf Lager" ?
15. Februar 2012 16:57
PRZglobal := GetPRZ(10, BarcodeKlartextOhnePRZ);
BarcodeKlartext := BarcodeKlartextOhnePRZ + FORMAT(PRZglobal);
// Variablen für GetPRZ
piModul Integer
piNutzziffern Text 1024
//GetPRZ
IF piModul < 1 THEN BEGIN
ERROR('Modul darf nicht kleiner 1 sein.');
END;
FOR Pos := 1 TO STRLEN(piNutzziffern) DO BEGIN
Char := COPYSTR(piNutzziffern, Pos, 1);
CurrPRZ := STRPOS('0123456789', Char);
IF CurrPRZ = 0 THEN BEGIN
ERROR('Zeichen dürfen nur 0123456789 enthalten.');
END ELSE BEGIN
CurrPRZ -= 1;
PRZ := (PRZ + CurrPRZ) MOD piModul;
END;
END;
retPRZ := (piModul - (PRZ MOD piModul)) MOD piModul;
15. Februar 2012 17:13
15. Februar 2012 17:31
15. Februar 2012 19:08
procedure CalcCode39Mod43(TXT : Text[30]) : Text[30]
begin
SearchStr :='0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ-. $/+%';
for i:=1 to Strlen(TXT) do
begin
ChPOS :=strpos(SearchStr,format(txt[i]));
if ChPOS =0 then
error('unzulässiges Zeichen:'+format(TXT[i]));
crcsum += (ChPOS -1);
end;
exit(txt+format(searchstr[(crcsum mod 43)+1]));
end;
16. Februar 2012 09:51
//Parameter
//BarcodeString Text 60
//Variablen
//BarcodeStringModulo43 Text 5
//BarcodeStringLength Integer
//Modulo43 Integer
//CharVar Text 30
//Pos Integer
//SumBarcode Integer
//SumVar Integer
SumBarcode := 0;
Modulo43 := 0;
FOR Pos := 1 TO STRLEN(BarcodeString) DO BEGIN
CharVar := COPYSTR(BarcodeString, Pos, 1);
//Umrechnung Zeichen zu Zahlenwert
CASE CharVar OF
'0': SumVar := 0;
'1': SumVar := 1;
'2': SumVar := 2;
'3': SumVar := 3;
'4': SumVar := 4;
'5': SumVar := 5;
'6': SumVar := 6;
'7': SumVar := 7;
'8': SumVar := 8;
'9': SumVar := 9;
'A': SumVar :=10;
'B': SumVar :=11;
'C': SumVar :=12;
'D': SumVar :=13;
'E': SumVar :=14;
'F': SumVar :=15;
'G': SumVar :=16;
'H': SumVar :=17;
'I': SumVar :=18;
'J': SumVar :=19;
'K': SumVar :=20;
'L': SumVar :=21;
'M': SumVar :=22;
'N': SumVar :=23;
'O': SumVar :=24;
'P': SumVar :=25;
'Q': SumVar :=26;
'R': SumVar :=27;
'S': SumVar :=28;
'T': SumVar :=29;
'U': SumVar :=30;
'V': SumVar :=31;
'W': SumVar :=32;
'X': SumVar :=33;
'Y': SumVar :=34;
'Z': SumVar :=35;
'-': SumVar :=36;
'.': SumVar :=37;
' ' : SumVar :=38;
'$': SumVar :=39;
'/': SumVar :=40;
'+': SumVar :=41;
'%': SumVar :=42;
ELSE
MESSAGE('Unzulässiges Zeichen für HIBC Barcode');
END;
SumBarcode := SumBarcode + SumVar;
END;
Modulo43 := (SumBarcode MOD 43);
//Umrechnung Zahlenwert zu Zeichen
CASE Modulo43 OF
0: BarcodeStringModulo43 :='0';
1: BarcodeStringModulo43 :='1';
2: BarcodeStringModulo43 :='2';
3: BarcodeStringModulo43 :='3';
4: BarcodeStringModulo43 :='4';
5: BarcodeStringModulo43 :='5';
6: BarcodeStringModulo43 :='6';
7: BarcodeStringModulo43 :='7';
8: BarcodeStringModulo43 :='8';
9: BarcodeStringModulo43 :='9';
10: BarcodeStringModulo43 :='A';
11: BarcodeStringModulo43 :='B';
12: BarcodeStringModulo43 :='C';
13: BarcodeStringModulo43 :='D';
14: BarcodeStringModulo43 :='E';
15: BarcodeStringModulo43 :='F';
16: BarcodeStringModulo43 :='G';
17: BarcodeStringModulo43 :='H';
18: BarcodeStringModulo43 :='I';
19: BarcodeStringModulo43 :='J';
20: BarcodeStringModulo43 :='K';
21: BarcodeStringModulo43 :='L';
22: BarcodeStringModulo43 :='M';
23: BarcodeStringModulo43 :='N';
24: BarcodeStringModulo43 :='O';
25: BarcodeStringModulo43 :='P';
26: BarcodeStringModulo43 :='Q';
27: BarcodeStringModulo43 :='R';
28: BarcodeStringModulo43 :='S';
29: BarcodeStringModulo43 :='T';
30: BarcodeStringModulo43 :='U';
31: BarcodeStringModulo43 :='V';
32: BarcodeStringModulo43 :='W';
33: BarcodeStringModulo43 :='X';
34: BarcodeStringModulo43 :='Y';
35: BarcodeStringModulo43 :='Z';
36: BarcodeStringModulo43 :='-';
37: BarcodeStringModulo43 :='.';
38: BarcodeStringModulo43 :=' ';
39: BarcodeStringModulo43 :='$';
40: BarcodeStringModulo43 :='/';
41: BarcodeStringModulo43 :='+';
42: BarcodeStringModulo43 :='%';
ELSE BEGIN
MESSAGE('Prüfziffer fehlerhaft');
EXIT;
END;
END;
EXIT(BarcodeStringModulo43);
16. Februar 2012 10:16
procedure CalcCode39Mod43Char(TXT : Text[30]) : Text[30]
begin
SearchStr :='0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ-. $/+%';
for i:=1 to Strlen(TXT) do
begin
ChPOS :=strpos(SearchStr,format(txt[i]));
if ChPOS =0 then
error('unzulässiges Zeichen:'+format(TXT[i]));
crcsum += (ChPOS -1);
end;
exit(format(searchstr[(crcsum mod 43)+1])); // hier die Änderung zu meiner Ursprünglichen Funktion
end;
procedure CheckCode39Mod43(TXT : Text[30]) :boolean
begin
SearchStr :='0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ-. $/+%';
for i:=1 to Strlen(TXT)-1 do // man beachte hier
begin
ChPOS :=strpos(SearchStr,format(txt[i]));
if ChPOS =0 then
error('unzulässiges Zeichen:'+format(TXT[i]));
crcsum += (ChPOS -1);
end;
exit(searchstr[(crcsum mod 43)+1]=TXT[Strlen(txt)]); // und hier
end;