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);
 Ich möchte mit EXIT(BarcodeStringModulo43); die Prüfziffer zurück an den Report übergeben. Dort rufe ich die Codeuit mit FunctionsInhouse.HIBCModulo43Calc(BarcodeString); auf. Ich bekomme aber die Prüfziffer  BarcodeStringModulo43 nicht im Report.
 Ich möchte mit EXIT(BarcodeStringModulo43); die Prüfziffer zurück an den Report übergeben. Dort rufe ich die Codeuit mit FunctionsInhouse.HIBCModulo43Calc(BarcodeString); auf. Ich bekomme aber die Prüfziffer  BarcodeStringModulo43 nicht im Report.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;