EAN-Codierung

Übersicht BlitzBasic Codearchiv

Neue Antwort erstellen

 

Timo

Betreff: EAN-Codierung

BeitragSo, Jun 13, 2004 20:10
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi!
Wer wollte schon immer wissen wie ein EAN-Code aufgebaut ist? Nun ja, hab nichts zu tun gehabt und mal so ein Programm erstellt. Ihr müsst nur den EAN-Code eingeben und er druckt euch den Strichcode aus!!
Ob man das jetzt brauch ist ne andere Frage... Very Happy Very Happy

****EDIT: Änderung Vorgenommen!! -- funzt jetzt besser****

BlitzBasic: [AUSKLAPPEN]

;EAN-Codierung

EAN$ = Input("Bitte gebe den EAN-Code ein: ")

If PruefeEAN(EAN) = False Then
Print "EAN-Code Ungültig!"
WaitKey()
End
Else
ZeichneEAN(EAN,50,50,200,3)
WaitKey()
End
EndIf





;Diese Funktion prüft, ob die Prüfziffer richtig ist
Function PruefeEAN(EANCode$)
Local Pruefziffer%
Local Zahl%,counter%
Local ergebnis%

Ergebnis = 0
;Letzte Ziffer ist die Prüfziffer
If Len(EANCode$) <> 13 Then Return False

PruefZiffer = Right(EANCode$,1)
;Ergebnis Erechnen mit jeder Zahl außer der Prüfziffer
For counter = 0 To 10 Step 2
Ergebnis = Ergebnis + Int(Mid(EANCode$,counter+1,1))
Ergebnis = Ergebnis + Int(Mid(EANCode$,counter+2,1)) * 3
Next
Ergebnis = Ergebnis + PruefZiffer

If Ergebnis Mod 10 = 0 Then
Return True
Else
Return False
EndIf
End Function




Function ZeichneEAN(EANCode$,x=50,y=50,height=100,width=1)
Local Ziffer% ;1.Ziffer im Code
Local counter% ;Schleifenzähler
Local Muster$,Codierung$

Color 255,255,255
;Erste Zahl entscheidet über die Codierung der ersten Folge
Ziffer = Int(Left(EANCode$,1))
;Wie wird dann der Rest codiert?
Muster$ = CodeMuster(Ziffer)

DrawBalken(x,y,width,height)
x = x + 3* width

For counter = 1 To 6
If Mid(Muster$,counter,1) = "I" Then ;Codierung mit A
Codierung$ = CodeA(Mid(EANCode,counter+1,1))
DrawCode(Codierung$,x,y,width,height)
x = x + width * 7
Else ;Codierung mit B
Codierung$ = CodeB(Mid(EANCode,counter+1,1))
DrawCode(Codierung$,x,y,width,height)
x = x + width * 7
EndIf
Next

x = x + width
DrawBalken(x,y,width,height)
x = x + 4* width

For counter = 8 To 13
Codierung$ = CodeC(Mid(EANCode,counter,1)) ;Codierung mit C
DrawCode(Codierung$,x,y,width,height)
x = x + width * 7
Next

DrawBalken(x,y,width,height)

End Function



Function DrawBalken(x,y,width,height)
Rect x,y,width,height + 10
Rect x+ 2*width,y,width,height + 10
End Function






Function DrawCode(Codierung$,x,y,width,height)
Local counter ;Schleifenzähler
For counter = 0 To 6
If Mid(Codierung$,counter+1,1) = "I" Then Rect x + counter * width,y,width,height,1
Next
End Function


Function CodeMuster$(Ziffer)
If Ziffer = 0 Then Return "IIIIII"
If Ziffer = 1 Then Return "IIOIOO"
If Ziffer = 2 Then Return "IIOOIO"
If Ziffer = 3 Then Return "IIOOOI"
If Ziffer = 4 Then Return "IOIIOO"
If Ziffer = 5 Then Return "IOOIIO"
If Ziffer = 6 Then Return "IOOOII"
If Ziffer = 7 Then Return "IOIOIO"
If Ziffer = 8 Then Return "IOIOOI"
If Ziffer = 9 Then Return "IOOIOI"
End Function

Function CodeA$(Code)
If Code = 0 Then Return "OOOIIOI"
If Code = 1 Then Return "OOIIOOI"
If Code = 2 Then Return "OOIOOII"
If Code = 3 Then Return "OIIIIOI"
If Code = 4 Then Return "OIOOOII"
If Code = 5 Then Return "OIIOOOI"
If Code = 6 Then Return "OIOIIII"
If Code = 7 Then Return "OIIIOII"
If Code = 8 Then Return "OIIOIII"
If Code = 9 Then Return "OOOIOII"
End Function

Function CodeB$(Code)
If Code = 0 Then Return "OIOOIII"
If Code = 1 Then Return "OIIOOII"
If Code = 2 Then Return "OOIIOII"
If Code = 3 Then Return "OIOOOOI"
If Code = 4 Then Return "OOIIIOI"
If Code = 5 Then Return "OIIIOOI"
If Code = 6 Then Return "OOOOIOI"
If Code = 7 Then Return "OOIOOOI"
If Code = 8 Then Return "OOOIOOI"
If Code = 9 Then Return "OOIOIII"
End Function

Function CodeC$(Code)
If Code = 0 Then Return "IIIOOIO"
If Code = 1 Then Return "IIOOIIO"
If Code = 2 Then Return "IIOIIOO"
If Code = 3 Then Return "IOOOOIO"
If Code = 4 Then Return "IOIIIOO"
If Code = 5 Then Return "IOOIIIO"
If Code = 6 Then Return "IOIOOOO"
If Code = 7 Then Return "IOOOIOO"
If Code = 8 Then Return "IOOIOOO"
If Code = 9 Then Return "IIIOIOO"
End Function
  • Zuletzt bearbeitet von Timo am Sa, Jan 15, 2011 20:21, insgesamt 3-mal bearbeitet

Spikespine

BeitragSo, Jun 13, 2004 20:31
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich hab keine Ahnung was ein EAN-Code ist Embarassed

Mr.Keks

BeitragSo, Jun 13, 2004 20:43
Antworten mit Zitat
Benutzer-Profile anzeigen
diese lustigen strichcodes im supermarkt Wink
musst einfach 12 zahlen eingeben!

und man muss die prüfziffer beachten....
MrKeks.net

sbrog

BeitragSo, Jun 13, 2004 20:47
Antworten mit Zitat
Benutzer-Profile anzeigen
ean code ungültig Shocked
 

Edlothiol

BeitragSo, Jun 13, 2004 20:49
Antworten mit Zitat
Benutzer-Profile anzeigen
123456789012 klappt.
Ist aber lustig Razz Obwohl es wohl zu nichts zunutze ist...
 

Timo

BeitragSo, Jun 13, 2004 21:10
Antworten mit Zitat
Benutzer-Profile anzeigen
Joa stimmt wohl @Edlothiol....

Hier ne kurze Einweisung:
die ersten 2 Zahlen sind fürs Land (40 ist zB Deutschland)
die nächsten 6 sind für die Firma
die weiteren 6 sind für das Produkt

die letzte Zahl ist die Prüfziffer
Also insgesamt 13 Ziffern

@sbrog: Probier mal EAN-Codes von irgendwelchen Produkten, die müssten alle funzen Wink

Markus2

BeitragMo, Jun 14, 2004 13:11
Antworten mit Zitat
Benutzer-Profile anzeigen
Edlothiol hat Folgendes geschrieben:
... Obwohl es wohl zu nichts zunutze ist...


Vieleicht könnte man sich selber Labels für den SuperMarkt machen
und so immer billig einkaufen Confused
 

Timo

BeitragMo, Jun 14, 2004 14:10
Antworten mit Zitat
Benutzer-Profile anzeigen
Ja, das geht auf jeden Fall, ich habs noch nicht ausprobiert, aber ich hab zu Hause gerade ein Lesegerät, und der nimmt die ausgedruckten EAN-Codes an!! Laughing
 

Timo

BeitragMo, Jun 14, 2004 14:41
Antworten mit Zitat
Benutzer-Profile anzeigen
Oh - mir ist da gerade was aufgefallen.... Die Überprüfung war falsch, na ja müsste jetzt aber klappen!! Embarassed
 

Blitzkrieg Bop

BeitragMo, Jun 14, 2004 15:59
Antworten mit Zitat
Benutzer-Profile anzeigen
Okay....brauchen wir noch noch einen freiwilligen Tester, der mal eben in Supermarkt geht Laughing
~ Hey Ho Let's Go ~

Blatolo

BeitragMo, Jun 14, 2004 16:12
Antworten mit Zitat
Benutzer-Profile anzeigen
Jetzt ist die Prüfung imho sinnlos.
Ist nicht jede Zahl durch 10 und wieder mal 10 die ursprüngliche Zahl?
Und warum gehst du jetzt nur noch bis zur 10. Ziffer und addierst hinter her doch noch die Pruefziffer?
Ich dachte die sollte eben nicht addiert werden sondern nur verglichen.
 

Timo

BeitragMo, Jun 14, 2004 16:19
Antworten mit Zitat
Benutzer-Profile anzeigen
nene, die ersten 12 Zahlen addiert man immer wobei jede 2. noch mal 3 genommen wird.

Ich gehe nur bis 10, da ich bei 0 Anfange...

Der EAN-Code ist richtig, wenn Das Ergebnis + Prüfziffer durch 10 Teilbar ist:

Reihe If Ergebnis = 10 * int( Ergebnis / 10.0) then

gibt nur true aus (soll sie zumindest nur) wenn Ergebnis durch 10 Teilbar ist. wenn ergebnis 4 ist, passt es zum Beispiel nicht mehr...
 

Edlothiol

BeitragMo, Jun 14, 2004 16:21
Antworten mit Zitat
Benutzer-Profile anzeigen
Das geht auch einfacher / schöner Wink :[syntax="bb":1:c6a16553cc]If Ergebnis Mod 10 = 0 Then[/syntax:1:c6a16553cc]

Blatolo

BeitragMo, Jun 14, 2004 17:17
Antworten mit Zitat
Benutzer-Profile anzeigen
So wie Edlothiol es geschrieben hat wäre es wenigstens ersichtlich geworden was du bezweckst.

Ctuchik

BeitragMo, Jun 14, 2004 18:24
Antworten mit Zitat
Benutzer-Profile anzeigen
Also was das billig einkaufen angeht!
Wenn man die Dinger verändert ... der Preis wird doch dann vom Lesegerät anhand der Produktnummer festgestelllt, seh ich das richtig?
Und ist es dann nicht auffällig, wenn da was ganz anderes steht, als man eigentlich kauft? Smile
 

Timo

BeitragMo, Jun 14, 2004 19:25
Antworten mit Zitat
Benutzer-Profile anzeigen
@Edlothiol -- jaja hast ja recht, ist wesentlich einfacher und übersichtlicher!! Embarassed

@Ctuchik Also du musst das nur schlau angehen: Merk dir den EAN-Code von der 200 Gramm Nudelpackung, drucke ihn aus und klebe ihn über den EAN-Code einer 2 Kilogramm Packung

Aber immer dran denken! nur drüber spekulieren, nicht machen! Very Happy

BladeRunner

Moderator

BeitragMo, Jun 14, 2004 20:04
Antworten mit Zitat
Benutzer-Profile anzeigen
Damit das ginge müsstest du selbstredend Codes von Produkten nehmen, welche in dem Markt verkauft werden wo Du bist. Hatte schon den Fall das irgendein Spassvogel was ins Regal gestellt hatte. Ich habs natürlich gegriffen, aber da das Produkt nicht in der Kasse gespeichert war, wurde es auch nicht angenommen.
Aber das wird hier langsam rechtlich sehr fragwürdig.
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3
Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64
B3D BMax MaxGUI

Stolzer Gewinner des BAC#48, #52 & #92

Neue Antwort erstellen


Übersicht BlitzBasic Codearchiv

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group