AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Projekte [Bibliothek] Barcode für Delphi (Zint)

[Bibliothek] Barcode für Delphi (Zint)

Ein Thema von chaosben · begonnen am 27. Nov 2009 · letzter Beitrag vom 24. Okt 2020
Antwort Antwort
Seite 12 von 14   « Erste     2101112 1314   
Benutzerbild von chaosben
chaosben
Registriert seit: 27. Apr 2005
Geschichte & Hintergrund
Ende 2009 entstand hier und im TUO-Repository die TZintBarcode-Komponente. Das war ein Compilat der Zint-Bibliothek als 32bit-Windows-DLL und die dazu passenden Delphi Wrapper-Klassen und Komponenten.
Zint ist ein C-Projekt von Robin Stuart, einem sehr netten Entwickler aus UK.
Nach einer Weile starb das original Zint-Projekt (und damit auch die Weiterentwicklung unserer Komponente) weil Robin das Projekt nicht mehr unterstützte.
Ende Mai 2012 kam wieder frischer Wind in das Zint-Projekt, auch durch den Fork (was auch gleichzeitig der aktuelle Stand der Dinge ist) von Ismael Luceno auf github.
Da wir externe Abhängigkeiten(in diesem Fall die zint.dll) nicht gern haben, entschieden wir uns (nach Absprache mit Robin), den originalen C-Code nach Pascal zu übersetzen.
Dabei gelten 2 Regeln:
  1. So nah wie möglich am originalen C-Code bleiben, damit Bugfixes und Features möglichst einfach übernommen werden können
  2. So Pascal wie möglich, damit auch die FreePascal-Gemeinde (und damit möglichst viele Plattformen) etwas davon hat.
Und damit sind wir im Heute angekommen. Die Übersetzung ist vollständig erledigt und nun warten wir auf euer Feedback.

Was es ist
Dies ist eine native Pascal-Implementation der Zint-Bibliothek zur Erstellung von verschiedenen 1D- und 2D-Barcodes.

Download
Den Code gibts per SVN.
Lizenz
Apache License 2.0

Was im Moment geht
Zur Zeit sind folgende Codes verfügbar:
  • 2of5Matrix, 2of5Industrial, 2of5Interleaved, 2of5IATA, 2of5Datalogic
  • Deutsche Post Leitcode, Deutsche Post Identcode
  • EAN128, Code128, Code128B, NVE18, ITF14, EAN14
  • Datamatrix
  • Maxicode
  • Code 11, Code 39, Pharmacentral (PZN), Extended Code39, Code93
  • Pharmacode, 2-Track-Pharmacode, Codabar, Code32
  • Australia Post Code, Australia Post Reply Code, Australia Post Route Code, Australia Post Redirect Code
  • Aztec, Azrunes
  • Code16k
  • Code49
  • Composites: EAN128
  • QR-Code, MicroQR-Code
  • Gridmatrix
  • Plessey, MSI-Plessey
  • EAN13, EAN5, EAN2, UPCA, UPCE, ISBN
  • Telepen,
  • [Korea|Dutch|Japan]Post
  • GS1-Databar
Folgende Rendering-Ziele werden im Moment unterstützt:
  • TCanvas (Delphi, FMX, Lazarus)
  • TMetafile (Delphi)
  • TlmfImage (Lazarus)
  • TBitmap (Delphi, FMX, Lazarus)
  • SVG nativ (Delphi, FMX, Lazarus)

Was noch fehlt
  • Firebird-UDF (man darf doch mal träumen, oder?)

Danke für die Mitarbeit (Ideen, Bugs, ...)
Fragen, Anregungen, Issues
Falls ihr dergleichen habt, schreibt sie bitte in den Issue-Tracker oder auch in diesen Thread (falls eine akute Google-Allergie besteht ). In der Regel sollte sich eine Lösung finden lassen.
Wünsche, die in Form einer PayPal-Zahlung ankommen, werden bevorzugt bearbeitet.

Viel Spass!
Angehängte Grafiken
 
If I have seen further it is by standing on the shoulders of Giants. (Isaac Newton)

Geändert von chaosben ( 9. Feb 2014 um 08:45 Uhr)
 
Benutzerbild von chaosben
chaosben

 
Delphi XE2 Professional
 
#111
  Alt 1. Nov 2013, 09:34
Danke!

Das mit dem Array_Copy und dem #0 an 9. Stelle habe ich gefixt.
Deinen zweiten Vorschlag in der latin1_process verstehe ich nicht. Kannst du mir das ein bisschen erklären? (bin grad schwer von Begriff)
Benjamin Schwarze
  Mit Zitat antworten Zitat
Carsten2

 
Delphi 4 Standard
 
#112
  Alt 1. Nov 2013, 12:07
Das Ergebnis von latin1_process soll sein, dass jedes preprocessed[j] kleiner 128 ist!
Ist es aber erst bei zweimaligem Aufruf der Funktion oder eben mit meiner Änderung.
Teste es mit einem "ü"! Der veränderte latin1_process meldet den Fehler beim ersten Aufruf.

Oh je, ich lese gerade "ü" gehört zu latin-1.
Also vergesst meine Änderung!
Deswegen exitiert jetzt der Fehler nur in der zint.dll bei Maxicode.

Geändert von Carsten2 ( 1. Nov 2013 um 13:13 Uhr)
  Mit Zitat antworten Zitat
Carsten2

 
Delphi 4 Standard
 
#113
  Alt 4. Nov 2013, 13:55
Fehler in unit zint_upcean

in function eanx
local_source kann länger als 20 sein:
So tritt der Zeigerfehler jedenfalls nicht mehr auf!?
tritt auf mit BARCODE_EANX_CC Primary "012345678905+123", also falscher Add-on Länge...

Code:
  //SetLength(local_source, 20);//Alt
  SetLength(local_source, 41);//Neu

  //for reader := 0 to ustrlen(local_source) do //Alt
  //  if (source[reader] = Ord('+')) then with_addon := TRUE;//Alt
  for reader := 0 to ustrlen(local_source) - 1 do //Neu
    if (local_source[reader] = Ord('+')) then with_addon := TRUE;//Neu
in upcean.c ebenfalls bis <=!?

in procedure upce
noch einen:
Code:
  //for i := 0 to ustrlen(source) do //Alt
  for i := 0 to ustrlen(source)-1 do //Neu
    case Chr(parity[i]) of
      'A': lookup(NEON, EANsetA, source[i], dest);
      'B': lookup(NEON, EANsetB, source[i], dest);
    end;
in upcean.c ebenfalls bis <=!?

Geändert von Carsten2 ( 4. Nov 2013 um 14:32 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von chaosben
chaosben

 
Delphi XE2 Professional
 
#114
  Alt 6. Nov 2013, 11:39
Sehr gut! Danke!
Benjamin Schwarze
  Mit Zitat antworten Zitat
Carsten2

 
Delphi 4 Standard
 
#115
  Alt 12. Nov 2013, 17:39
Fehler in allen Composite Symbols
in Mode CC B bzw CC C:
Der PDF417-Part ist nicht identisch mit dem der Zint.dll
im Mode CC A ist alles OK!

2.
mehrere Zeigerfehler bei zsRSS_EXPSTACK
Data: "[28]1" oder "[28]123456"

meine Korrekturen, die Absturz verhindern, aber ein bisschen willkürlich sind:
unit zint_rss;
function rss_binary_string:
Code:
  SetLength(general_field, strlen(source) + 10);//geändert + 10
  SetLength(general_field_type, strlen(source) + 10);//geändert + 10
  SetLength(padstring, 40 + 10);//geändert + 10
function rssexpanded:
Code:
  SetLength(reduced, src_len + 20);//geändert + 20
  SetLength(binary_string, 7 * src_len + 7 * 20);//geändert + 7 * 20
3. Fehler korrigiert:
function rss_binary_string:
Code:
    4: begin concat(binary_string, '0101'); read_posn := strlen(source); end;
    //5: begin concat(binary_string, '0110XX'); read_posn := 20; end;//Alt
    5: begin concat(binary_string, '01100XX'); read_posn := 20; end;//Neu
    6: begin concat(binary_string, '01101XX'); read_posn := 23; end;

Geändert von Carsten2 (12. Nov 2013 um 18:11 Uhr)
  Mit Zitat antworten Zitat
Carsten2

 
Delphi 4 Standard
 
#116
  Alt 29. Nov 2013, 13:55
Björk: It's so quiet...

Habe bisher den Fehler in den Composites nicht gefunden!

Oder ist da gar keiner mehr?
  Mit Zitat antworten Zitat
Benutzerbild von chaosben
chaosben

 
Delphi XE2 Professional
 
#117
  Alt 3. Dez 2013, 12:28
Theoretisch sollte es keine Fehler mehr geben.
Benjamin Schwarze
  Mit Zitat antworten Zitat
Carsten2

 
Delphi 4 Standard
 
#118
  Alt 3. Dez 2013, 13:33
Leider gibt es bei mir eine Differenz zwischen Theorie und Praxis

Alle Composites mit Modus CC-B unterscheiden sich weiterhin von denen mit der Zint.dll.

... und ich weiss nicht warum
  Mit Zitat antworten Zitat
Benutzerbild von chaosben
chaosben

 
Delphi XE2 Professional
 
#119
  Alt 3. Dez 2013, 16:34
Da hat einer aber mal wieder Recht gehabt!
Diese Differenzen sollten jetzt nicht mehr auftreten.
Benjamin Schwarze
  Mit Zitat antworten Zitat
Carsten2

 
Delphi 4 Standard
 
#120
  Alt 3. Dez 2013, 17:07
Schön, dass die Differenzen verschwunden sind.
Der Fehler lag also in der zint_pdf417.pas!
Vielen Dank für die neuerliche Verbindung von Theorie und Praxis!
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:32 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz