Newsgroup: it.comp.lang.visual-basic
Titolo: EAN13

cerco collaborazione per mettere a punto una subroutine per stampare
l'ean13 usando un font  e senza usare nessun controllo OCX o similari
!!
Grazie.		
Antonio Tanzillo  
in...@at-softpippo.com
KillPippoforrepondez

l'ean13 usando un font  e senza usare nessun controllo OCX o similari
Hemm....
se hai il font non serve nessuna subroutine, basta impostarlo in design del
report.
Saluti

 !!
Io per la mia routine di stampa dei codici EAN ho utilizzato le
informazioni che puoi
trovare nel sito della ACSE srl (
www.acse.it
 mi pare).
In questo sito hanno il "manuale del codice a barre" dove ti spiega come
costruire
i codici EAN 8 e 13 con relativo calcolo del check digit.
Saluti,
Antonello.

Checksum...) Bettini documentiamoci prima di dire cose inesatte..

 il font? Così poi lo mettiamo sul sito comune.
Si, vediamo di realizzarlo.
anch'io ho documentazione in proposito.
Io pero' non ho la piu' pallida idea di come si fanno i fonts (TrueType)!   (Anzi se qualcuno mi dice come si fanno)
Il Sito comune non aspetta altro.....
-- 
Hi, Ciao
Ettore                 By -MES-
http://freeweb.aspide.it/freeweb/ilmes
Il sito comune di programmatori VB
http://members.xoom.com/it_lang_vb

>diversa per caratteri pari e dispari e per gruppo (2 gruppi di 6 carattere
Non riesco a trovare un font editor che non sia a pagamento !!
Antonio Tanzillo  
in...@at-softpippo.com
KillPippoforrepondez

Visto che nessuno sa costruire fonts, o per lo meno non gli va di "regalare"
il font del barcode, allora me lo sono fatto da solo (non ci credevo ma ce
l'ho fatta!)
Ho testato EAN13 e EAN8 con il font dai 6 punti ai 72 punti, con stampanti
laser e inkjet, con lettori laser e penne ottiche e va che è una meraviglia.
O meglio SEMBRA funzionare.
Chi mi dà una mano a testarlo?
Inoltre c'è il problema della composizione: non si puo digitare 12345678 per
avere il barcode. Ci sono delle regole ben precise per codificarlo e si deve
sollevare l'utente da questo compito.
Quindi:
- o si fornisce una routine in VB (che spero di arrivare a fare questo
week-end)
- o si fornisce un OCX (e qui qualcuno mi deve aiutare)
- o si fornisce una DLL (che forse è la soluzione migliore, ma non ho i
mezzi per farla)
In pratica serve una funzione che, data la stringa del codice a barre (es
"8765432") calcola il check-digit  e restituisce una stringa alfanumerica da
stampare (o visualizzare) con il font ean.
Chi mi aiuta?
Poi il tutto lo mettiamo sul sito comune, alla faccia di chi chiede 300$ per
un font EAN che è costato un paio d'ore di lavoro!
Aspetto vostre nuove. Ci sentiamo lunedì.
Mauro Mariz
3nto
Ettore Maronese ha scritto nel messaggio <01bdd210$9b5cc5a0$64c0c0c0@mes>...


Visto che nessuno sa costruire fonts, o per lo meno non gli va di
"regalare"
Regalino per tutti:
Function Ean13CheckDigit$(codi8$)
        If Len(codi8$) < 12 Then Exit Function
           EV = 0: OD = 0: I = 14
           Do
               I = I - 2: If I <= 0 Then Exit Do
               AA = Val(Mid$(codi8$, I, 1))
               If I <> 1 Then
                 AB = Val(Mid$(codi8$, I - 1, 1)): OD = OD + AB
               End If
               EV = EV + AA
           Loop
           CSUM = (10 - ((EV * 3 + OD) Mod 10)) Mod 10
           Ean13CheckDigit$ = Mid$(Str$(CSUM), 2)
End Function
Function IsEan13(cod$)
If Len(cod$) <> 13 Then Exit Function
If Val(cod$) = 0 Then Exit Function
chk$ = Mid$(cod$, 13, 1)
If chk$ <> Ean13CheckDigit$(cod$) Then Exit Function
IsEan13 = True
End Function
Saluti a tutti.

 Aspetto vostre nuove. Ci sentiamo lunedì.
OK


Chi mi aiuta?
Questa funzione ritorna il 13° carattere (check digit). Non fa controlli se
la stringa passata è valida, comunque si potrebbe sempre aggiungere
all'inizio: if Not Ean like "############" then ...
Ho anche aggiunto un minimo di commento per far capire come va calcolato.
Public Function CalcChecksumEan13(Ean As String) As String
 'vengono passate le prime 12 cifre di un codice EAN 13 e ritorna il
checksum (non fa controlli)
 Dim i As Integer, Sum As Integer, Check As Integer
 Sum = 0
 'somma in posizione pari
 For i = 2 To 12 Step 2
  Sum = Sum + Val(Mid(Ean, i, 1))
 Next i
 'moltiplica per 3 le cifre in posizione pari
 Sum = Sum * 3
 'somma in posizione dispari
 For i = 1 To 11 Step 2
  Sum = Sum + Val(Mid(Ean, i, 1))
 Next i
 Sum = Sum Mod 10
 Check = (10 - Sum) Mod 10
 CalcChecksumEan13 = Check 'ritorna check
End Function
Per gli EAN 8 la funzione è simile ma non identica, vanno trattate le cifre
pari come le dispari e viceversa. Se serve, la posso postare.
--
Ciao, AntoGal
*************************************************
Home Page (area programmatori di VolFtp)
http://www.volftp.vol.it/IT/IT/ITALIANI/galletta
per scaricare un gioco di Dama Italiana.
*************************************************

pari come le dispari e viceversa. Se serve, la posso postare.
Non serve invertire pari e dispari se calcoli il check digit partendo da
destra verso sinistra.


Sono appena rientrato dalle ferie (sigh) e non penso di poter dedicare molto
tempo (lavoro arretrato), però se vuoi sono disponibile ad aiutarti nel
test.
Ciao Franco