Titolo: Ean2Bin
Categoria: Codice |
|
Ultimo Aggiornamento: 09/04/18 |
Funzione utile per ricavare una stringa come questa riferita al codice EAN 13 o EAN 8 : 00010100011010100111000110100100010100111010001101010111001011011001001110101110010100001101100101000
è possibile poi dividere la stringa e disegnare con SVG linee verticali di spessore normale (0) e spessore doppio (1) per ricavare l'immagine del barcode.
$1 è il codice EAN ( se è lungo 12 o 7 caratteri inserire anche il metodo checkdigit, lo trovate in questo forum).
C_LONGINT($K)
C_TEXT($strAux)
C_TEXT($strExit)
C_TEXT($strCode)
C_TEXT($strEANCode)
$strAux:=$1
$strEANCode:=$1
// se ho passato il codice ean senza check digit lo calcolo
If (Length($strAux)=12)
$strEANCode:=Ean138CheckDigit ($strEANCode)
Else If (Length($strAux)=7)
$strEANCode:=Ean138CheckDigit ($strEANCode)
End if End if $strAux:=$strEANCode
If (Not(isnumeric ($strAux)))
ALERT("Attenzione, il barcode contiene caratteri non validi")
$0:=""
End if If (Length($strAux)=13)
// verifico che sia un EAN 13
// per prima cosa scarto la prima cifra che è lo stato di emissione(fare riferimento ad INDICOD '
$strAux:=Substring($strAux;2)
C_LONGINT($numero)
$numero:=Num(tleft ($strEANCode;1))
Case of : $numero=0
$strCode:="000000"
: $numero=1
$strCode:="001011"
: $numero=2
$strCode:="001101"
: $numero=3
$strCode:="001110"
: $numero=4
$strCode:="010011"
: $numero=5
$strCode:="011001"
: $numero=6
$strCode:="011100"
: $numero=7
$strCode:="010101"
: $numero=8
$strCode:="010110"
: $numero=9
$strCode:="011010"
End case Else $strCode:="0000"
End if //
//Il codice EAN inizia con un carattere iniziale
//
$strExit:="000101"
//
//Prima metà del codice
//
For ($K;1;Length($strAux)\2)
C_TEXT($code)
C_LONGINT($numero)
$code:=Substring($strCode;$K;1)
$numero:=Num(Substring($strAux;$K;1))
Case of : $numero=0
C_TEXT($temptext)
If ($code="0")
$temptext:="0001101"
Else $temptext:="0100111"
End if $strExit:=$strExit+$temptext
: $numero=1
C_TEXT($temptext)
If ($code="0")
$temptext:="0011001"
Else $temptext:="0110011"
End if $strExit:=$strExit+$temptext
: $numero=2
C_TEXT($temptext)
If ($code="0")
$temptext:="0010011"
Else $temptext:="0011011"
End if $strExit:=$strExit+$temptext
: $numero=3
C_TEXT($temptext)
If ($code="0")
$temptext:="0111101"
Else $temptext:="0100001"
End if $strExit:=$strExit+$temptext
: $numero=4
C_TEXT($temptext)
If ($code="0")
$temptext:="0100011"
Else $temptext:="0011101"
End if $strExit:=$strExit+$temptext
: $numero=5
C_TEXT($temptext)
If ($code="0")
$temptext:="0110001"
Else $temptext:="0111001"
End if $strExit:=$strExit+$temptext
: $numero=6
C_TEXT($temptext)
If ($code="0")
$temptext:="0101111"
Else $temptext:="0000101"
End if $strExit:=$strExit+$temptext
: $numero=7
C_TEXT($temptext)
If ($code="0")
$temptext:="0111011"
Else $temptext:="0010001"
End if $strExit:=$strExit+$temptext
: $numero=8
C_TEXT($temptext)
If ($code="0")
$temptext:="0110111"
Else $temptext:="0001001"
End if $strExit:=$strExit+$temptext
: $numero=9
C_TEXT($temptext)
If ($code="0")
$temptext:="0001011"
Else $temptext:="0010111"
End if $strExit:=$strExit+$temptext
End case End for //
// Prosegue poi con un separatore di mezzo
//
$strExit:=$strExit+"01010"
//
// Seconda metà del codice
//
For ($K;Length($strAux)\2+1;Length($strAux))
C_LONGINT($numero)
$numero:=Num(Substring($strAux;$K;1))
Case of : $numero=0
$strExit:=$strExit+"1110010"
: $numero=1
$strExit:=$strExit+"1100110"
: $numero=2
$strExit:=$strExit+"1101100"
: $numero=3
$strExit:=$strExit+"1000010"
: $numero=4
$strExit:=$strExit+"1011100"
: $numero=5
$strExit:=$strExit+"1001110"
: $numero=6
$strExit:=$strExit+"1010000"
: $numero=7
$strExit:=$strExit+"1000100"
: $numero=8
$strExit:=$strExit+"1001000"
: $numero=9
$strExit:=$strExit+"1110100"
End case End for // Il Codice EAN finisce con un separatore finale
$strExit:=$strExit+"101000"
$0:=$strExit
Inviato da: Massimiliano Chiodi |
|
Visite: 6603 |
Se accedi con utente e password, puoi aggiungere dei commenti.