Entwickler-Ecke
Algorithmen, Optimierung und Assembler - Prüfziffer für (Bar)Code39
SvenZ - Do 08.02.07 18:04
Titel: Prüfziffer für (Bar)Code39
Hallo,
ich möchte einen beliebigen String als Code39-BarCode drucken.
Dazu muß ich die Prüfziffer berechnen. Das geht über Modulo43.
Existiert da schon irgendwo ein Algorithmus (Delphi)?
Das Drucken hab ich im Griff, mir geht's bloß um den Prüfziffern-Alg.
Danke für Hilfe.
BenBE - Do 08.02.07 18:57
Wo hängst Du?
Die Prüfsummen-Berechnung ist doch im Wiki-Artikel beschrieben:
http://de.wikipedia.org/wiki/Code39
Wenn Du den Operator für Modulo suchst:
mod ...
SvenZ - Do 08.02.07 20:42
den Algorithmus an sich kenne ich. Mein Problem ist die möglichst effektive programmtechnische Umsetzung, speziell der Wertetabelle, die ja in beide Richtungen funktionieren soll (also sowohl A=10, als auch 10=A)ohne ellenlange case Anweisungungen.
BenBE - Do 08.02.07 21:13
Naja, dann versuchs mal so:
Delphi-Quelltext
1: 2:
| const Digits = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ...'; |
Von 10 nach A:
Delphi-Quelltext
1: 2: 3: 4:
| Function IndexToChar(Index: Integer): Char; Begin Result := Digits[Index]; end; |
Aufruf mit
IndexToChar(10)Umgekehrt geht's so:
Delphi-Quelltext
1: 2: 3: 4:
| Function CharToIndex(C: Char): Integer; begin Result := Pos(C, Digits) - 1; end; |
Aufruf mit
CharToIndex('A')
SvenZ - Do 08.02.07 21:19
na das sieht ja mal sehr effektiv aus, werds morgen mal einbauen.
Danke Dir... :think:
hansa - Do 08.02.07 23:03
Titel: Re: Prüfziffer für (Bar)Code39
Wo liegt denn genau das Problem ?
SvenZ hat folgendes geschrieben: |
Das Drucken hab ich im Griff, mir geht's bloß um den Prüfziffern-Alg. |
Wozu wird dann die Prüfziffer noch gebraucht ? Das muss der Drucker können bzw. die Schriftart muss da sein, oder eine entsprechende Delphi-Komponente (-> TurboPower). Oder geht es nur um Interesse, wie so eine Prüfziffer aufgebaut ist ? :shock: Das wäre schlecht investierte Zeit.
SvenZ - Fr 09.02.07 09:08
@Hansa: ich brauch die Prüfziffer noch an anderen Stellen im Programm. Z.Bsp. soll der ausgedruckte Barcode dann per Scanner wieder eingelesen und ein Plausibilitätstest durchgeführt werden.
alzaimar - Fr 09.02.07 09:16
Die Prüfziffernprüfung erledigen die Scanner i.d.R. selbst. Dabei kannst Du meistens auch noch wählen, ob die Prüfziffer mit übertragen werden soll, oder nicht. Normalerweise interessiert mich die Prüfziffer nicht, also stelle ich den Scanner so ein, das die Prüfziffer abgeschnippelt wird.
Ehrlich gesagt, implementiere ich noch nicht einmal eine Prüfziffer: Code39 ist sicher genug (jedenfalls in meinen Anwendungen). Fehllesungen sind extrem selten und führen eigentlich immer zu einer Meldungen 'unbekannte Produktnummer'.
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!