Deutsch
Quelltexte/ Codesnippets

EAN13 Barcode generieren.

 

Thomas
Zielinski
Hallo,
der EAN13 Barcode ist nicht einfach nur eine Folge von umgewandelten Zahlen in Striche sondern unterliegt einigen Regeln.
Natürlich darf er auch nicht einfach munter drauf los genutzt werden sondern unterliegt der Vergabe entsprechender Länderstellen.
EAN 13 Codes die mit einer 2 Anfangen sind allerdings für einen flexibleren Einsatz wie an der Wursttheke oder in der Gemüseabteilung reserviert.

Ein EAN13 Code besteht aus 13 Ziffern. Die ersten 2 bis 3 Ziffern geben das Land der Ausgabe an, gefolgt von einer 5- oder 7-Stelligen Betriebsnummer, der eigentlichen Artikelnummer und an 13. Stelle eine Prüfzahl.

Für die einzelnen Stellen 0-9 gibt es jeweils 3 mögliche Anordnungen der Balken abhängig von Ihrer Position im Barcode und der ersten Ziffer.
Die erste Ziffer wird nicht direkt übersetzt, sondern ergibt sich aus der Anordnung der Ziffern 2 bis 7. Die Ziffern 8 bis 13 werden aber immer nach dem selben Schema erstellt.

Der beigefügte Quellcode ist vielleicht nicht sonderlich elegant gelöst, aber funktioniert für mein Projekt.


//EAN 13 Code
//Thomas Zielinski - Oktober 2021
//   Links             Rechts Parität
//   Ungerade Gerade   Rechts 1. Ziffer
//0: 0001101  0100111 1110010 UUUUUU
//1: 0011001  0110011 1100110 UUGUGG
//2: 0010011  0011011 1101100 UUGGUG
//3: 0111101  0100001 1000010 UUGGGU
//4: 0100011  0011101 1011100 UGUUGG
//5: 0110001  0111001 1001110 UGGUUG
//6: 0101111  0000101 1010000 UGGGUU
//7: 0111011  0010001 1000100 UGUGUG
//8: 0110111  0001001 1001000 UGUGGU
//9: 0001011  0010111 1110100 UGGUGU
//Aufbau: Start - 6 Ziffern Links - Mitte - 6 Ziffern Rechts - Ende
//Die erste Ziffer ergibt sich aus der Verteilung der Ziffern 2 bis 7 gemäß der Tabelle ob eine gerade oder eine ungerade Quersumme angewandt wird.
//101 2. 3. 4. 5. 6. 7. 01010 8. 9. 10. 11. 12. 13. 101
//101 U U G G U G 01010 R R R R R R 101  <- 2. bis 7. Ob U oder G siehe Parität (Im Beispiel hier die 2)
//Die 1. Zahl sollte immer ein 2 sein. Alle anderen Ziffern sind durch die EAN Ländern zugeordnet und nur nach Vergabe nutzbar. Die 2 aber ist für den Einzellhandel und kann beliebig genutzt werden.
// Die 13. Zahl ist eine Prüfziffer und errechnet sich aus Modulo10((1.+3.+5.+7.+9.+11.)+((2.+4.+6.+8.+10.+12.)*3)); IfNot erg% == 0 Then erg% = 10-erg%
// Es verbleiben also nur 11 Ziffern zum vergeben wenn man keine Nummer zugewiesen bekommen hat. Therotisch kann die 2. Ziffer im 2er-Bereich ebenfalls durch die Zuständige Vergabestelle vorgegeben sein. Das Ignoriere ich hier aber.
// Bei der Zuweisung bekommt man übrigens nur die ersten 5 bzw 7 Ziffern zugewiesen. Die Restlichen Ziffern können frei gewählt werden, wobei die 13. die Prüfziffer ist.
Declare Nummern$, Ziffern%[], i%, EAN$, ErstCode$[]
CLS
//Paritätstabelle
ErstCode$[0] = "UUUUUU"
ErstCode$[1] = "UUGUGG"
ErstCode$[2] = "UUGGUG"
ErstCode$[3] = "UUGGGU"
ErstCode$[4] = "UGUUGG"
ErstCode$[5] = "UGGUUG"
ErstCode$[6] = "UGGGUU"
ErstCode$[7] = "UGUGUG"
ErstCode$[8] = "UGUGGU"
ErstCode$[9] = "UGGUGU"
Print "Geben Sie 12 Ziffern ein:"
Print "Die erste Nummer sollte eine 2 sein für den Einzelhandel."
Input Nummern$
//Nummern$ = "269854713256"
//ACHTUNG! Hier keine Prüfung auf plausibilität. Empfehle ich aber dringend.
i% = 0
For i%,12
Ziffern%[i%] = SubStr$(Nummern$,i%)
Print "Ziffer " + Str$(i%)+": "+Str$(Ziffern%[i%])
EndFor
//Prüfziffer berechnen
Ziffern%[13] = 10-(((Ziffern%[1]+Ziffern%[3]+Ziffern%[5]+Ziffern%[7]+Ziffern%[9]+Ziffern%[11])+((Ziffern%[2]+Ziffern%[4]+Ziffern%[6]+Ziffern%[8]+Ziffern%[10]+Ziffern%[12])*3)) MOD 10)

If Ziffern%[13] = 10

    Ziffern%[13] = 0

EndIf

Print "Ziffer 13: "+Str$(Ziffern%[13])
//Startbereich Einfügen
EAN$ = "101"
i% = 0
For i%,12

If i% <= 6

    //Vor der Mitte

    SELECT Ziffern%[i%+1]

        CASEOF 0

        If SubStr$(ErstCode$[Ziffern%[1]],i%) = "U"

            EAN$ = EAN$ + "0001101"

        Else

            EAN$ = EAN$ + "0100111"

        EndIf

        CASEOF 1

        If SubStr$(ErstCode$[Ziffern%[1]],i%) = "U"

            EAN$ = EAN$ + "0011001"

        Else

            EAN$ = EAN$ + "0110011"

        EndIf

        CASEOF 2

        If SubStr$(ErstCode$[Ziffern%[1]],i%) = "U"

            EAN$ = EAN$ + "0010011"

        Else

            EAN$ = EAN$ + "0011011"

        EndIf

        CASEOF 3

        If SubStr$(ErstCode$[Ziffern%[1]],i%) = "U"

            EAN$ = EAN$ + "0111101"

        Else

            EAN$ = EAN$ + "0100001"

        EndIf

        CASEOF 4

        If SubStr$(ErstCode$[Ziffern%[1]],i%) = "U"

            EAN$ = EAN$ + "0100011"

        Else

            EAN$ = EAN$ + "0011101"

        EndIf

        CASEOF 5

        If SubStr$(ErstCode$[Ziffern%[1]],i%) = "U"

            EAN$ = EAN$ + "0110001"

        Else

            EAN$ = EAN$ + "0111001"

        EndIf

        CASEOF 6

        If SubStr$(ErstCode$[Ziffern%[1]],i%) = "U"

            EAN$ = EAN$ + "0101111"

        Else

            EAN$ = EAN$ + "0000101"

        EndIf

        CASEOF 7

        If SubStr$(ErstCode$[Ziffern%[1]],i%) = "U"

            EAN$ = EAN$ + "0111011"

        Else

            EAN$ = EAN$ + "0010001"

        EndIf

        CASEOF 8

        If SubStr$(ErstCode$[Ziffern%[1]],i%) = "U"

            EAN$ = EAN$ + "0110111"

        Else

            EAN$ = EAN$ + "0001001"

        EndIf

        CASEOF 9

        If SubStr$(ErstCode$[Ziffern%[1]],i%) = "U"

            EAN$ = EAN$ + "0001011"

        Else

            EAN$ = EAN$ + "0010111"

        EndIf

    ENDSELECT

    //Mittleren Bereich einfügen

    If i% = 6

        EAN$ = EAN$ + "01010"

    EndIf

Else

    //Nach der Mitte

    SELECT Ziffern%[i%+1]

        CASEOF 0

        EAN$ = EAN$ + "1110010"

        CASEOF 1

        EAN$ = EAN$ + "1100110"

        CASEOF 2

        EAN$ = EAN$ + "1101100"

        CASEOF 3

        EAN$ = EAN$ + "1000010"

        CASEOF 4

        EAN$ = EAN$ + "1011100"

        CASEOF 5

        EAN$ = EAN$ + "1001110"

        CASEOF 6

        EAN$ = EAN$ + "1010000"

        CASEOF 7

        EAN$ = EAN$ + "1000100"

        CASEOF 8

        EAN$ = EAN$ + "1001000"

        CASEOF 9

        EAN$ = EAN$ + "1110100"

    ENDSELECT

EndIf

EndFor
//Endbereich einfügen
EAN$ = EAN$+"101"
Print EAN$
Print Str$(Len(EAN$))+" Blöcke"//Wenn hier nicht 95 als Ergebnis kommt ist irgend etwas schief gelaufen
//Ein paar Leerzeilen
Print ""
Print ""
Print ""
Print ""
Print ""
Print ""
Print ""
Print ""
Print ""
//Zeichnen
Print "  "+Str$(Ziffern%[1])+"    "+Str$(Ziffern%[2])+Str$(Ziffern%[3])+Str$(Ziffern%[4])+Str$(Ziffern%[5])+Str$(Ziffern%[6])+Str$(Ziffern%[7])+"     "+Str$(Ziffern%[8])+Str$(Ziffern%[9])+Str$(Ziffern%[10])+Str$(Ziffern%[11])+Str$(Ziffern%[12])+Str$(Ziffern%[13])
UsePen 0,1,RGB(0,0,0)
i% = 0
For i%,95

If SubStr$(EAN$,i%) = 1

    SELECT i%

        CASEOF 1,2,3,46,47,48,49,50,95,94,93

        Line 30+2*i%-1,300 - 30+2*i%-1,370
        Line 30+2*i%,300 - 30+2*i%,370
        OTHERWISE
        Line 30+2*i%-1,300 - 30+2*i%-1,350
        Line 30+2*i%,300 - 30+2*i%,350

    ENDSELECT

EndIf

EndFor
Waitinput
End

12 kB
Bezeichnung:Screenshot
Version:0.1
Kurzbeschreibung: Screenshot des ausgeführten Codes EAN13
Hochgeladen:23.10.2021
Ladeanzahl76
Herunterladen
 
XProfan X4; Win10 x64
Der Kuchen ist eine lüge!
23.10.2021  
 




p.specht

Hab´s für XProfan-11.2a free retro-transponiert. Klappt nun auch compiliert ( Doppelpunkte in Kommentarzeilen interpretiert der alte Compiler als Zeilentrenner und wundert sich dann über unbekannte Befehle).
Achtung, weitestgehend ungetestet - daher ohne jede Gewähr! Prüfbar mittels online-Generator von  [...] 
'  'EAN 13 Strichcode generieren' by Thomas Zielinski, Okt.2021
' Retro-transponiert nach XProfan-11.2a free by p.specht in Nov.2021

' Grundsätzlicher EAN-13-Strichodeaufbau:
' Start="101" - 6 Ziffern Links - Mitte="01010" - 6 Ziffern Rechts - Ende="101"

' Links Mitte=01010 Rechts Parität
' Ungerade Gerade Rechts der 1. Ziffer
' *) **)
' 0- 0001101 0100111 1110010 UUUUUU
' 1- 0011001 0110011 1100110 UUGUGG
' 2- 0010011 0011011 1101100 UUGGUG
' 3- 0111101 0100001 1000010 UUGGGU
' 4- 0100011 0011101 1011100 UGUUGG
' 5- 0110001 0111001 1001110 UGGUUG
' 6- 0101111 0000101 1010000 UGGGUU
' 7- 0111011 0010001 1000100 UGUGUG
' 8- 0110111 0001001 1001000 UGUGGU
' 9- 0001011 0010111 1110100 UGGUGU
' ____
' *) "Links ungerade" wird hier invertiert und mittig gespiegelt
' **)"Links ungerade" wird binär invertiert.

' Aufbau= Startcode - 6 Ziffern links - Mittencode - 6 Ziffern rechts - Endecode
' Die Codierung der ersten Ziffer (die den Anwendungsbereich kennzeichnet) ergibt sich für die Stringpositionen 2 bis 7 aus der obigen Tabelle,
' Das steuert, ob eine gerade oder eine ungerade Quersumme angewandt wird.
' Im nachstehenden Beispiel sei diese erste Ziffer = 2 ("Einzelhandel")
' 101 2. 3. 4. 5. 6. 7. 01010 8. 9. 10. 11. 12. 13. 101 <- Stringpositionsfestlegung für das Programm
' 101 U U G G U G 01010 R R R R R R 101 <- 2. bis 7. Ob U oder G siehe Parität oben

' Die 1. Zahl (Stringposition 2) sollte in diesem Anwendungsfall immer auf den WErt 2 lauten,
' alle anderen Ziffern ausser 2 sind durch die EAN bestimmten Ländern zugeordnet und nur nach offiieller Vergabe nutzbar.
' Die 2 aber ist für den Einzelhandel generell und kann dann mehr oder weniger beliebig genutzt werden.
' Es verbleiben also nur 11 Ziffern zur freien Vergabe wenn man keine Nummer zugewiesen bekommen hat.
' Therotisch kann die 2. Ziffer im 2er-Bereich ebenfalls durch die zuständige Vergabestelle vorgegeben sein. Das Ignoriere ich hier aber.
' Bei der Zuweisung bekommt man übrigens die ersten 5 bzw 7 Ziffern (Herstellerkennung) zugewiesen. Nur
' die restlichen 7 bis 5 Positionen können dann frei gewählt werden.

' Die 13. Zahl ist eine Prüfziffer und errechnet sich aus der folgender Formel
' PrüfZiffer = Modulo10((1.+3.+5.+7.+9.+11.)+((2.+4.+6.+8.+10.+12.)*3)); IfNot erg% == 0 Then erg% = 10-erg%

WindowTitle "EAN-13 for XProfan-11 free, nach Orig. von Thomas Zielinski"
WindowStyle 24

Declare Nummern$, Ziffern%[], i%, EAN$, ErstCode$[], ans$
' Paritätstabelle
ErstCode$[0] = "UUUUUU"
ErstCode$[1] = "UUGUGG"
ErstCode$[2] = "UUGGUG"
ErstCode$[3] = "UUGGGU"
ErstCode$[4] = "UGUUGG"
ErstCode$[5] = "UGGUUG"
ErstCode$[6] = "UGGGUU"
ErstCode$[7] = "UGUGUG"
ErstCode$[8] = "UGUGGU"
ErstCode$[9] = "UGGUGU"

Schleife:
CLS
Print "\nBitte geben Sie die 12 Ziffern ein (Die erste sollte 2 sein für Einzelhandel):"
Print "............"
Input Nummern$
' Nummern$ = "269854713256"
' ACHTUNG! Hier keine Prüfung auf Plausibilität. Empfehle ich aber dringend.
if len(Nummern$)<>12
print " *** Ziffernanzahl 12 stimmt nicht! ***"
beep
waitinput
goto "Schleife"
endif

Clear Ziffern%[]
Whileloop 12:i%=&Loop
Ziffern%[i%] = val(Mid$(Nummern$,i%,1))
Print "Ziffer Nr." + Str$(i%)+": "+Str$(Ziffern%[i%])
EndWhile
' Prüfziffer berechnen
Ziffern%[13] = 10-(((Ziffern%[1]+Ziffern%[3]+Ziffern%[5]+Ziffern%[7]+Ziffern%[9]+Ziffern%[11])+\
((Ziffern%[2]+Ziffern%[4]+Ziffern%[6]+Ziffern%[8]+Ziffern%[10]+Ziffern%[12])*3)) MOD 10)
Case Ziffern%[13] = 10:Ziffern%[13] = 0
Print "Prüfziffer 13: "+Str$(Ziffern%[13])

' Startbereich Einfügen
EAN$ = "101"
Whileloop 12:i%=&Loop
If i% <= 6 ' Vor der Mitte:
SELECT Ziffern%[i%+1]
CASEOF 0
If SubStr$(ErstCode$[Ziffern%[1]],i%) = "U"
EAN$ = EAN$ + "0001101"
Else
EAN$ = EAN$ + "0100111"
EndIf
CASEOF 1
If SubStr$(ErstCode$[Ziffern%[1]],i%) = "U"
EAN$ = EAN$ + "0011001"
Else
EAN$ = EAN$ + "0110011"
EndIf
CASEOF 2
If SubStr$(ErstCode$[Ziffern%[1]],i%) = "U"
EAN$ = EAN$ + "0010011"
Else
EAN$ = EAN$ + "0011011"
EndIf
CASEOF 3
If SubStr$(ErstCode$[Ziffern%[1]],i%) = "U"
EAN$ = EAN$ + "0111101"
Else
EAN$ = EAN$ + "0100001"
EndIf
CASEOF 4
If SubStr$(ErstCode$[Ziffern%[1]],i%) = "U"
EAN$ = EAN$ + "0100011"
Else
EAN$ = EAN$ + "0011101"
EndIf
CASEOF 5
If SubStr$(ErstCode$[Ziffern%[1]],i%) = "U"
EAN$ = EAN$ + "0110001"
Else
EAN$ = EAN$ + "0111001"
EndIf
CASEOF 6
If SubStr$(ErstCode$[Ziffern%[1]],i%) = "U"
EAN$ = EAN$ + "0101111"
Else
EAN$ = EAN$ + "0000101"
EndIf
CASEOF 7
If SubStr$(ErstCode$[Ziffern%[1]],i%) = "U"
EAN$ = EAN$ + "0111011"
Else
EAN$ = EAN$ + "0010001"
EndIf
CASEOF 8
If SubStr$(ErstCode$[Ziffern%[1]],i%) = "U"
EAN$ = EAN$ + "0110111"
Else
EAN$ = EAN$ + "0001001"
EndIf
CASEOF 9
If SubStr$(ErstCode$[Ziffern%[1]],i%) = "U"
EAN$ = EAN$ + "0001011"
Else
EAN$ = EAN$ + "0010111"
EndIf
ENDSELECT
' Mittleren Bereich einfügen
If i% = 6
EAN$ = EAN$ + "01010"
EndIf
Else
' Nach der Mitte
SELECT Ziffern%[i%+1]
CASEOF 0
EAN$ = EAN$ + "1110010"
CASEOF 1
EAN$ = EAN$ + "1100110"
CASEOF 2
EAN$ = EAN$ + "1101100"
CASEOF 3
EAN$ = EAN$ + "1000010"
CASEOF 4
EAN$ = EAN$ + "1011100"
CASEOF 5
EAN$ = EAN$ + "1001110"
CASEOF 6
EAN$ = EAN$ + "1010000"
CASEOF 7
EAN$ = EAN$ + "1000100"
CASEOF 8
EAN$ = EAN$ + "1001000"
CASEOF 9
EAN$ = EAN$ + "1110100"
ENDSELECT
EndIf
EndWhile
' Endbereich einfügen
EAN$ = EAN$+"101"
Print EAN$
Print Str$(Len(EAN$))+" Blöcke"
if len(EAN$)<>95
print " *** Wenn hier nicht 95 als Ergebnis kommt ist offenbar irgend etwas schief gelaufen! ***"
beep
waitinput
Endif
' Ein paar Leerzeilen
Print ""
Print ""
Print ""
Print ""
Print ""
Print ""
Print ""
' Zeichnen
Print " "+Str$(Ziffern%[1])+" "+Str$(Ziffern%[2])+Str$(Ziffern%[3])+Str$(Ziffern%[4])+Str$(Ziffern%[5])+Str$(Ziffern%[6])+Str$(Ziffern%[7])+" "+Str$(Ziffern%[8])+Str$(Ziffern%[9])+Str$(Ziffern%[10])+Str$(Ziffern%[11])+Str$(Ziffern%[12])+Str$(Ziffern%[13])
UsePen 0,1,RGB(255,0,0)
WHILELOOP 95:i%=&Loop
If val(mid$(EAN$,i%,1)) = 1
SELECT i%
CASEOF 1,2,3,46,47,48,49,50,95,94,93
Line 30+2*i%-1,300 - 30+2*i%-1,370
Line 30+2*i%,300 - 30+2*i%,370
OTHERWISE
Line 30+2*i%-1,300 - 30+2*i%-1,350
Line 30+2*i%,300 - 30+2*i%,350
ENDSELECT
EndIf
EndWHILE
print
print
beep
print "\nEinen weiteren Code generieren? (j/n) ";
input ans$
ans$=lower$(left$(ans$,1))
case ans$="j":goto "Schleife"
print "Na dann: Auf Wiedersehen!"
beep
waitinput 2500
END
 
Computer: Gerät, daß es in Mikrosekunden erlaubt, 50.000 Fehler zu machen, zB 'daß' statt 'das'...
05.11.2021  
 




p.specht

Der EAN-13 Code heißt in Österreich seit einiger Zeit GS1-Code, wie diesem PDF unserer Wirtschaftskammer zu entnehmen ist:  [...] 
 
XProfan 11
Computer: Gerät, daß es in Mikrosekunden erlaubt, 50.000 Fehler zu machen, zB 'daß' statt 'das'...
06.11.2021  
 




p.specht

Ein EAN-13-Scanner-Algorithmus wird zB HIER (pdf) beschrieben:  [...] 

Allerdings ist der Deepl-übersetzte Text für 1.Ziffer = 8, das gehört natürlich angepasst:

Zit.: DEKODIERUNGSALGORITHMUS
Die Barcodenummer wird mit Hilfe des Arrays der Balken-Breiten dekodiert. Die erste Ziffer ist hier immer 8, da es sich um die erste Ziffer des Ländercodes handelt und ist fest. Wie aus Tabelle 1 hervorgeht, wird die erste
Gruppe von 6 Ziffern als LGLGGL codiert und die letzte Gruppe
von 6 Ziffern als RRRRR verschlüsselt. Jede Ziffer wird durch 4 Balken dargestellt, wobei sich die schwarzen und weißen Balken abwechseln. Für
die ersten 6 Ziffern ist der erste Balken immer ein weißer Balken und der nächste schwarz und so weiter. Bei den letzten 6 Ziffern ist es genau umgekehrt. Ein Balken kann vier Breiten von 1 bis 4 haben. Aus der Reihe der Balken-Breiten sind die ersten und letzten drei Breiten immer eins, was den Anfang und das Ende des Strichcodes angibt.

Die verbleibenden Breiten sind in jeweils 4 gruppiert, da eine bestimmte
Ziffer durch 4 Balken dargestellt wird. In Tabelle 2 steht 0 für weiß, und 1 steht für schwarz. Wenn zum Beispiel eine Gruppe von 4 Breiten (die eine Zahl aus den ersten 6 Ziffern darstellen) die Zahl 3112 ist, wird sie als 0001011 betrachtet (3 ist die Breite eines weißen Balken und wird daher durch drei Nullen dargestellt). Hier ist also 3 die Breite eines weißen Balkens, 1 die Breite eines schwarzen Balkens und so weiter. Aus der Tabelle1 ist diese erste Gruppe von 4 Breiten, die unter dem L-Code kodiert ist, in Tabelle 2 unter dem L-Code gesucht, und wird mit dem Code der Ziffer 9 übereinstimmen. Folglich wird die erste Ziffer als 9 dekodiert. Auch die anderen Ziffern werden mit Hilfe der Tabelle dekodiert.
Zit. Ende, Details sh. Literaturhinweise im pdf,
 
Computer: Gerät, daß es in Mikrosekunden erlaubt, 50.000 Fehler zu machen, zB 'daß' statt 'das'...
14.11.2021  
 



Zum Quelltext


Thementitel, max. 100 Zeichen.
 

Systemprofile:

Kein Systemprofil angelegt. [anlegen]

XProfan:

 Beitrag  Schrift  Smilies  ▼ 

Bitte anmelden um einen Beitrag zu verfassen.
 

Themenoptionen

2.836 Betrachtungen

Unbenanntvor 0 min.
RudiB.26.02.2024
Manfred Barei09.12.2023
Normann Strübli30.01.2023
Erasmus.Herold04.01.2023
Mehr...

Themeninformationen

Dieses Thema hat 2 Teilnehmer:

p.specht (3x)
Thomas Zielinski (1x)


Admins  |  AGB  |  Anwendungen  |  Autoren  |  Chat  |  Datenschutz  |  Download  |  Eingangshalle  |  Hilfe  |  Händlerportal  |  Impressum  |  Mart  |  Schnittstellen  |  SDK  |  Services  |  Spiele  |  Suche  |  Support

Ein Projekt aller XProfaner, die es gibt!


Mein XProfan
Private Nachrichten
Eigenes Ablageforum
Themen-Merkliste
Eigene Beiträge
Eigene Themen
Zwischenablage
Abmelden
 Deutsch English Français Español Italia
Übersetzungen

Datenschutz


Wir verwenden Cookies nur als Session-Cookies wegen der technischen Notwendigkeit und bei uns gibt es keine Cookies von Drittanbietern.

Wenn du hier auf unsere Webseite klickst oder navigierst, stimmst du unserer Erfassung von Informationen in unseren Cookies auf XProfan.Net zu.

Weitere Informationen zu unseren Cookies und dazu, wie du die Kontrolle darüber behältst, findest du in unserer nachfolgenden Datenschutzerklärung.


einverstandenDatenschutzerklärung
Ich möchte keinen Cookie