Delphi-PRAXiS
Seite 11 von 14   « Erste     91011 1213     Letzte » 

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Software-Projekte der Mitglieder (https://www.delphipraxis.net/26-software-projekte-der-mitglieder/)
-   -   [Bibliothek] Barcode für Delphi (Zint) (https://www.delphipraxis.net/143986-%5Bbibliothek%5D-barcode-fuer-delphi-zint.html)

Carsten2 28. Okt 2013 15:33

AW: [Bibliothek] Barcode für Delphi (Zint)
 
Fehler nicht gefunden::(
EAN-14 und NVE-18:
mit "1234567" Unterschied mit zint.pas und zint.dll
mit "1234568" ist das Ergebnis jedoch gleich.

Liegt wohl an check_digit bzw. nve_check im den
Funktionen ean_14 bzw. nve_18 in der Unit zint_code128.pas

Hat einer eine Idee:?:

In Maxicode Mode 3 gibt es auch den Unterschied mit zint.pas und zint.dll:
z.B. Data "123456" und Primary "123456000123123":!:

Carsten2 28. Okt 2013 18:17

AW: [Bibliothek] Barcode für Delphi (Zint)
 
Fehler gefunden::):)
EAN-14 und NVE-18:

in ean_14 und nve_18 in der Unit zint_code128.pas

in function nve_18
Code:
    //if((i and 1) <> 0) then //Alt
    if((i and 1) = 0) then //Neu
      Inc(total_sum, 2 * StrToInt(Chr(source[i])));
in function ean_14
Code:
    //if ((i and 1) <> 0) then //Alt
    if ((i and 1) = 0) then //Neu
      Inc(count, 2 * StrToInt(Chr(source[i])));
:lol:

chaosben 29. Okt 2013 09:37

AW: [Bibliothek] Barcode für Delphi (Zint)
 
Vielen Dank (mal wieder) für die gute Zuarbeit!
Die gefixte Version ist im SVN.

Noch ein paar Kommentare:
  • Fehler in aztec_text_process: Ja, der Index müsste der Bösewicht gewesen sein.
  • Fehler in maxicode: Ja, da waren die Indices falsch. Für Mode 3 muss man die ersten Zeichen selbst mit Leerzeichen auf 9 Stellen auffüllen. Und die Zuweisung der Arrays war wirklich blöd. :pale:
  • Fehler in code32: Wird jetzt (wie im C-Code) auf die Länge 34 gesetzt.
  • Checksumme in EAN14/NVE18: Die alte Variante (über zint.dll) beinhaltet noch den Original-Bug. Die zint.pas sollte es ganz richtig machen. :wink:

Carsten2 29. Okt 2013 13:24

AW: [Bibliothek] Barcode für Delphi (Zint)
 
Vielen Dank!

gerade zeigt der Zeiger erneut ins Leere::(
tritt in Composite EAN Linear mit Primary-Länge kleiner 12 auf:

unit zint_composite;
{ CC-A 2D component }
function cc_a(
Code:
  //dummy : array[0..4] of Integer;//Alt
  dummy : array[0..5] of Integer;//Neu
da cc_width > 3 sein kann und da macht es hier bum:
Code:
    for j := 0 to 4 do //Alt
    if cc_width > 4 then cc_width := 4; //Neu
    for j := 0 to 5 do //Neu
      dummy[j] := 0;
    for j := 0 to cc_width - 1 do
      dummy[j + 1] := codeWords[i * cc_width + j];
keine gute Fehlerbehebung :(
Kann man mit Error wohl besser abfangen...:?:

chaosben 30. Okt 2013 07:09

AW: [Bibliothek] Barcode für Delphi (Zint)
 
Das kann ich grad nicht nachvollziehen.
Wenn cc_width gleich 4 ist, dann läuft die Schleife (j) bis 3 (cc_width - 1) und schreibt maximal an die Stelle 4 (j + 1).
Das ist sollte das dummy-array aber vertragen.

Kannst du mal bitte die Daten (Primary und Daten) posten, mit denen der Fehler auftritt?

Carsten2 30. Okt 2013 10:32

AW: [Bibliothek] Barcode für Delphi (Zint)
 
ja stimmt.
aber cc_width kann grösser 4 sein.
zB. bei Data: "[78] 1234" Primary: "12345678905"
Vielleicht gibt es die Werte nicht,
aber ich möchte bei falschen Werten den "Absturz" verhindern.
Zint Barcode Studio 2.4 verabschiedet sich bei diesen Werten ganz.:(

So mogel' ich simpler ;-)
Code:
if cc_width > 4 then cc_width := 4; //Neu
Der Fehler liegt vorher - ein cc_width grösser 4.

Nützt alles nichts.
Die Werte lassen bei Mode CC-B das Programm in die Knie gehen.
Und zwar diesmal hier:

function cc_b:
Code:
for j := 0 to symbol.option_2 - 1 do
      dummy[j + 1] := chainemc[i * symbol.option_2 + j];

Carsten2 30. Okt 2013 11:45

AW: [Bibliothek] Barcode für Delphi (Zint)
 
Fehler/Absturz abgefangen::)

function composite:
Code:
case symbol.symbology of
    { Determine width of 2D component according to ISO/IEC 24723 Table 1 }
    BARCODE_EANX_CC:
    begin
      case pri_len of
        7, { EAN-8 }
        10, { EAN-8 + 2 }
        13: { EAN-8 + 5 }
          cc_width := 3;
        12, { EAN-13 }
        15, { EAN-13 + 2 }
        18: { EAN-13 + 5 }
          cc_width := 4;
        else //Neu
        begin //Neu
          concat(symbol.errtxt, 'Input wrong length in linear component'); //Neu
          result := ZERROR_INVALID_DATA; exit; //Neu
        end; //Neu
      end;
    end;

chaosben 31. Okt 2013 10:21

AW: [Bibliothek] Barcode für Delphi (Zint)
 
Sehr gut! Danke für die gute Zuarbeit. :-D

Carsten2 31. Okt 2013 19:48

AW: [Bibliothek] Barcode für Delphi (Zint)
 
function maxicode(

postcode[9] := #0; wurde vergessen, sonst gibt's Probleme in maxi_do_primary_2.


Code:
    ArrayCopy(postcode, symbol.primary);
    postcode[9] := #0;//Neu

    if (mode = 2) then
    begin
      //for i := 0 to 9 do //Neu
      for i := 0 to 8 do //Neu

Carsten2 31. Okt 2013 21:12

AW: [Bibliothek] Barcode für Delphi (Zint)
 
Deswegen wurde in maxicode latin1_process nochmals aufgerufen:

function latin1_process
Code:
      if (source[i] = $C2) then
      begin
        preprocessed[j] := source[i + 1];
        if (preprocessed[j] < 128) then begin //Neu
          Inc(j);
          next := i + 2;
        end; //Neu
      end;
      if(source[i] = $C3) then
      begin
        preprocessed[j] := source[i + 1] + 64;
        if (preprocessed[j] < 128) then begin //Neu
          Inc(j);
          next := i + 2;
        end; //Neu
      end;


Alle Zeitangaben in WEZ +1. Es ist jetzt 11:58 Uhr.
Seite 11 von 14   « Erste     91011 1213     Letzte » 

Powered by vBulletin® Copyright ©2000 - 2022, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2021 by Daniel R. Wolf