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 9 von 14   « Erste     789 1011     Letzte » 
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)
 
0815achim
 
#81
  Alt 27. Sep 2013, 07:53
@matashen

Du darfst nich Colorbox1.Color nehmen sondern Colorbox1.Selected.
Dann geht's

Gruß... 0815achim

Hoppla!
Sehe gerade das es in der Demo von Marco bereits richtig drin steht.

Geändert von 0815achim (27. Sep 2013 um 08:02 Uhr)
  Mit Zitat antworten Zitat
matashen

 
Delphi XE2 Enterprise
 
#82
  Alt 27. Sep 2013, 09:04
Ach ja, danke.

Ab und zu steht man einfach sowas von daneben
Matthias
  Mit Zitat antworten Zitat
Carsten2

 
Delphi 4 Standard
 
#83
  Alt 11. Okt 2013, 14:00
Fehler, die ich gefunden habe:
zint.pas
in function hibc:
Code:
  //for i := 1 to _length do
  for i := 0 to _length-1 do //geändert
    Inc(counter, posn(TECHNETIUM, source[i])) ;
in function ZBarcode_Encode:
Code:
  if (symbol.input_mode = GS1_MODE) then
  begin
    //for i := 1 to _length do
    for i := 0 to _length-1 do //geändert
    begin
zint_aztec.pas
in function aztec_runes:
Code:
  //strcpy(binary_string, '');
  for i := 0 to 28-1 do binary_string[i]:=#0;//geändert
Code:
if (ecc_codewords[4 - i] and v) <> 0 then binary_string[j] := '1' else
  //binary_string[j + 1] := '0';
  binary_string[j] := '0';//geändert
wer veröffentlicht weitere? Danke!

Geändert von Carsten2 (11. Okt 2013 um 17:23 Uhr)
  Mit Zitat antworten Zitat
HighBaer

 
Delphi XE3 Professional
 
#84
  Alt 11. Okt 2013, 14:33
Zunächst an Chaosben an den anderen des Teams: Klasse Arbeit!

Mir ist da auch ein kleiner Fehler in Micro-QR aufgefallen:

Bei Auswahl der "Version 4" kommt es zu einer Zugriffsverletzung.

Ich denke der Fehler liegt daran, dass bei der Umwandlung von "TmqVersion" zu Option_2 Version 1 den Wert 1 hat usw.
intern wird aber mit den Werten 0 bis 3 gearbeitet. Wert 4 führt daher zu dem Fehler, ich vermute daher auch, dass bei Auswahl von "Version 2" in Wirklichkeit Version 3 angezeigt wird.

Der Fehler ist meine Meinung nach in "zint_qr.pas" in Funktion "microqr" (Zeile 2451):
Delphi-Quellcode:
   
// Get version from user
if((symbol.option_2 >= 1) and (symbol.option_2 <= 4)) then
begin
  if(symbol.option_2 >= autoversion) then
    //version := symbol.option_2; Originalzeile
    version := symbol.option_2 - 1; // geändert
end;

In der gleichen Funktion vorher in Zeile 2405 ist vermutlich auch was falsch, was aber nicht so gravierend ist:

Delphi-Quellcode:
   // Eliminate possible versions depending on error correction level specified
   ecc_level := LEVEL_L;
   if((symbol.option_1 >= 1) and (symbol.option_2 <= 4)) then
     ecc_level := symbol.option_1;
Sollte der 2. Vergleich nicht "symbol.option_1 <= 4" lauten, macht in meinen Augen mehr Sinn.

Ich hoffe, ich habe Euch damit weitergeholfen ...
  Mit Zitat antworten Zitat
Carsten2

 
Delphi 4 Standard
 
#85
  Alt 11. Okt 2013, 15:22
für MICRO QR gibt es meiner Meinung nach keine Feherkorr. HIGH.
mqv4 ist so also obsolet.

Code:
// Get version from user
if((symbol.option_2 >= 1) and (symbol.option_2 <= 3)) then // geänderet
Code:
// Eliminate possible versions depending on error correction level specified
ecc_level := LEVEL_L;
if((symbol.option_1>=1)and(symbol.option_1<=3))then ecc_level:=symbol.option_1;// geänderet
Ja Chaosben, vielen Dank für die Arbeit!

Geändert von Carsten2 (11. Okt 2013 um 17:27 Uhr)
  Mit Zitat antworten Zitat
stalkingwolf
 
#86
  Alt 11. Okt 2013, 16:08
Wird der Code wirklich gezeichnet?
Falls ja, dann bin ich gespannt wie das auf kleinen Etiketten ausschaut und gelesen werden kann.
Unsere Erfahrung auf z.b Zebra GK420&Co das es nicht funktioniert.
Bei einer Etikettengröße von z.b 30x25mm nicht oder nur sehr schlecht lesbar. Meisten Handscanner schmeißen das Handtuch ( wenn nicht vorher der Kassierer den Scanner geworfen hat ).

Wir sind daher auf Schriftarten umgestiegen und haben die jeweiligen Algorithmen einprogrammiert.

Ich lasse mich aber gern eines bessere belehren. Die Schriftartenlogik beherbergt auch so ihre Probleme.

LG
Sven
  Mit Zitat antworten Zitat
Carsten2

 
Delphi 4 Standard
 
#87
  Alt 11. Okt 2013, 19:53
weiterer Fehler

ZINT_QR.PAS
in function evaluate

Code:
// Test 4: Proportion of dark modules in entire symbol
  dark_mods := 0;
  for x := 0 to size - 1 do begin
    //for y := 0 to size do begin // geändert
    for y := 0 to size - 1 do begin // geändert
  Mit Zitat antworten Zitat
Benutzerbild von MarcoWarm
MarcoWarm

 
Delphi 10.1 Berlin Professional
 
#88
  Alt 12. Okt 2013, 10:20
Hallo zusammen,
Und vielen Dank für die Fehlersuche. Ich werde mir das am Montag mal anschauen. Es wäre in der Zwischenzeit schön, wenn ihr die Fehlermeldung Bugtracker bei Google Code Posten könntet. Unserer Ansicht nach ist das der richtige Ort dafür. Ausserdem können wir dort gezielt auf jeden Fehler eingehen.
Schönes Wochenende
Von
Marco
Marco Warm
  Mit Zitat antworten Zitat
Benutzerbild von chaosben
chaosben

 
Delphi XE2 Professional
 
#89
  Alt 12. Okt 2013, 13:21
Danke für die Lobe und die Fehler!

Ausnahmsweise machen wir das heute mal kurz und unbürokratisch. Die Bugs sind in der aktuellen Revision gefixt.
Alles was ihr noch so findet, könnt ihr dann bitte hier posten.

Und nächste Woche sitzt dann Marco an der Hotline und ich mache Urlaub.
Benjamin Schwarze
  Mit Zitat antworten Zitat
Carsten2

 
Delphi 4 Standard
 
#90
  Alt 17. Okt 2013, 12:14
Liebe Leut'

ich bin nicht bei Google und will es auch nicht sein.
Ich verstehe leider nicht, warum hier nicht der richtige Ort sein soll, um auf Fehler im Quellcode hinzuweisen.
Gibt es eine andere (Google-)freie Möglichkeit?
  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 06:39 Uhr.
Powered by vBulletin® Copyright ©2000 - 2020, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2020 by Daniel R. Wolf