Página 1 de 2

BarCode Generator EAN 8-13 (No Plugins)

Publicado: 10 Nov 2019 06:46
por R Landaeta
Hola a todos, mi segundo aporte... trata de un proyecto que crea Códigos de barra EAN-8 y 13. El código en sí no es mio, es de LucasTheDuck del año 2010.

Enlace del post original:

HIDE: ON
Hidebb Message Hidden Description


El el post original se da un código al cual hay que añadirle prácticamente nada para dejarlo funcional, pero de todas maneras me tomo bastante tiempo. Espero que les sirva.

Capturas:

Imagen

Imagen

Enlace de descarga: 20kb

HIDE: ON
Hidebb Message Hidden Description


other link on Mediafire by abood1987
HIDE: ON
Hidebb Message Hidden Description


Saludos. :rockon-1417756812:

Re: BarCode Generator EAN 8-13 (No Plugins)

Publicado: 10 Nov 2019 13:08
por usamakey
tnks for your contribution

Re: BarCode Generator EAN 8-13 (No Plugins)

Publicado: 10 Nov 2019 14:38
por R Landaeta
usamakey escribió:
10 Nov 2019 13:08
tnks for your contribution
:content-1414023392:

Re: BarCode Generator EAN 8-13 (No Plugins)

Publicado: 10 Nov 2019 18:20
por jhonitimer
thnk you so much

Re: BarCode Generator EAN 8-13 (No Plugins)

Publicado: 10 Nov 2019 20:41
por Agotaras123
muchas gracias por tu aporte.

Re: BarCode Generator EAN 8-13 (No Plugins)

Publicado: 18 Nov 2019 22:07
por hdd.utilities
Testing friend I need the password.

Re: BarCode Generator EAN 8-13 (No Plugins)

Publicado: 21 Nov 2019 13:11
por Pabloko
Ya se ha puesto en otros hilos, no se pueden enviar archivos con contraseña e intercambiar por privado, al final voy a tener que quitar los PMs...

Teniendo en cuenta que el aporte es mio (lucastheduck fue mi segunda cuenta cuando me banearon pabloko por estar registrado en ru-board) y que yo lo publique sin mas, no se a que viene ponerlo protegido.

Originalmente esta fuente viene de un programa en VB6, el conversor fue adaptado a lua, poco mas recuerdo...

Acerca de todo este tema de los enlaces: viewtopic.php?f=15&t=6811&p=59932#p59932

Re: BarCode Generator EAN 8-13 (No Plugins)

Publicado: 21 Nov 2019 18:55
por R Landaeta
Pabloko escribió:
21 Nov 2019 13:11
Ya se ha puesto en otros hilos, no se pueden enviar archivos con contraseña e intercambiar por privado, al final voy a tener que quitar los PMs...

Teniendo en cuenta que el aporte es mio (lucastheduck fue mi segunda cuenta cuando me banearon pabloko por estar registrado en ru-board) y que yo lo publique sin mas, no se a que viene ponerlo protegido.

Originalmente esta fuente viene de un programa en VB6, el conversor fue adaptado a lua, poco mas recuerdo...

Acerca de todo este tema de los enlaces: viewtopic.php?f=15&t=6811&p=59932#p59932
ok.

Re: BarCode Generator EAN 8-13 (No Plugins)

Publicado: 22 Nov 2019 18:57
por Pabloko
function EAN8(chaine)
if String.Length(chaine) == 7 then
    checksum="";
    min = 7;
    max = 1; 
    step = -2; 
    for count = min, max, step do
        checksum=String.ToNumber(checksum)+String.ToNumber(String.Mid(chaine, count, 1));
    end
    checksum=checksum*3
    min = 6;
    max = 1;  
    step = -2; 
    for count = min, max, step do
        checksum=String.ToNumber(checksum)+String.Mid(String.ToNumber(chaine), count, 1);
    end
    k1=Math.Mod(checksum,10)
    chaine=chaine..Math.Mod(10-k1,10)
    codebarre=":"
    min = 1; 
    max = 4;   
    for count = min, max do
        codebarre=codebarre..String.Char(65+String.Mid(chaine, count, 1));
    end
    codebarre=codebarre.."*"
    min = 5; 
    max = 8; 
    for count = min, max do
        codebarre=codebarre..String.Char(97+String.Mid(chaine, count, 1));
    end
    codebarre=codebarre.."+"
    end
    return codebarre
end

  
function EAN13(chaine)
    if String.Length(chaine)==12 then
    min = 12; 
    max = 1;  
    step = -2;  
    checksum=""
    for count = min, max, step do
        checksum=String.ToNumber(checksum)+String.ToNumber(String.Mid(chaine, count, 1));
    end
    checksum=checksum*3
    min = 11;
    max = 1;  
    step = -2; 
    for count = min, max, step do
        checksum=String.ToNumber(checksum)+String.ToNumber(String.Mid(chaine, count, 1));
    end
    k1=Math.Mod(checksum,10)
    chaine=chaine..Math.Mod(10-k1,10)

    codebarre=String.Left(chaine, 1)..String.Char(65+String.Mid(chaine, 2, 1))
    
    end
    first= String.ToNumber(String.Left(chaine, 1));
    min = 3;
    max = 7; 
    for count = min, max do
        tablea=false
        
        if (count==3) then
            if (first==0 or first==1 or first==2 or first==3) then
            tablea=true
            end
        elseif (count==4) then
            if (first==0 or first==4 or first==7 or first==8) then
            tablea=true
            end
        elseif (count==5) then
            if (first==0 or first==1 or first==4 or first==5 or first==9) then
            tablea=true
            end
        elseif (count==6) then
            if (first==0 or first==2 or first==5 or first==6 or first==7) then
            tablea=true
            end
        elseif (count==7) then
            if (first==0 or first==3 or first==6 or first==9) then
            tablea=true
            end
        end
        
        if (tablea==true) then
            codebarre=codebarre..String.Char(65+String.Mid(chaine, count, 1));
        else
            codebarre=codebarre..String.Char(75+String.Mid(chaine, count, 1));
        end
        
    end
    codebarre=codebarre.."*"
    min = 8;  
    max = 13; 
    for count = min, max do
        codebarre=codebarre..String.Char(97+String.Mid(chaine, count, 1));
    end
    codebarre=codebarre.."+"
return codebarre
end

function ADDON(chaine)
    if String.Length(chaine)==2 or String.Length(chaine)==5 then
        checksum=""
        if String.Length(chaine)==2 then
            checksum=10+Math.Mod(chaine,4);
        else
            min = 1; 
            max = 5;  
            step = 2; 
            for count = min, max, step do
                checksum=String.ToNumber(checksum)+String.ToNumber(String.Mid(chaine, count, 1));
            end
            checksum=Math.Mod(checksum*3+(String.Mid(chaine, 2, 1)*9)+(String.Mid(chaine, 4, 1)*9),10)
        end
        addon="["
        min = 1; 
        max = String.Length(chaine); 
        for count = min, max do
            tablea=false;
            if (count==1) then
                if (checksum==4 or checksum==5 or checksum==6 or checksum==7 or checksum==8 or checksum==9 or checksum==10 or checksum==11) then
                tablea=true
                end
            elseif (count==2) then
                if (checksum==1 or checksum==2 or checksum==3 or checksum==5 or checksum==6 or checksum==9 or checksum==10 or checksum==12) then
                tablea=true
                end
            elseif (count==3) then
                if (checksum==0 or checksum==2 or checksum==3 or checksum==6 or checksum==7 or checksum==8) then
                tablea=true
                end
            elseif (count==4) then
                if (checksum==0 or checksum==1 or checksum==3 or checksum==4 or checksum==8 or checksum==9) then
                tablea=true
                end
            elseif (count==5) then
                if (checksum==0 or checksum==1 or checksum==2 or checksum==4 or checksum==5 or checksum==7) then
                tablea=true
                end
            end
            if (tablea==true) then
                addon=addon..String.Char(65+String.Mid(chaine,count,1))
            else
                addon=addon..String.Char(75+String.Mid(chaine,count,1))
            end
            
            if (String.Length(chaine)==2 and count==1) or (String.Length(chaine)==5 and count<5) then
            addon=addon..String.Char(92)
            end
        end
        
    end
    return addon
end 
Que asco de codigo, como hemos cambiado...

Solo hay que poner un label con la funete adjunta y el texto se genera con estas funciones

Si no recuerdo mal, el proyecto original de la fuente es este: https://grandzebu.net/informatique/codbar-en/ean13.htm
de donde porté el codigo a lua, si os fijais el codigo es casi el mismo solo que usando un lenguaje distinto...

Código: Seleccionar todo

Public Function EAN8$(chaine$)
  'Cette fonction est régie par la Licence Générale Publique Amoindrie GNU (GNU LGPL)
  'This function is governed by the GNU Lesser General Public License (GNU LGPL)
  'V 1.0.0
  'Paramètres : une chaine de 7 chiffres
  'Parameters : a 7 digits length string
  'Retour : * une chaine qui, affichée avec la police EAN13.TTF, donne le code barre
  '         * une chaine vide si paramètre fourni incorrect
  'Return : * a string which give the bar code when it is dispayed with EAN13.TTF font
  '         * an empty string if the supplied parameter is no good
  Dim i%, checksum%, first%, CodeBarre$, tableA As Boolean
  EAN8$ = ""
  'Vérifier qu'il y a 7 caractères
  'Check for 7 characters
  If Len(chaine$) = 7 Then
    'Et que ce sont bien des chiffres
    'And they are really digits
    For i% = 1 To 7
      If Asc(Mid$(chaine$, i%, 1)) < 48 Or Asc(Mid$(chaine$, i%, 1)) > 57 Then
        i% = 0
        Exit For
      End If
    Next
    If i% = 8 Then
      'Calcul de la clé de contrôle
      'Calculation of the checksum
      For i% = 7 To 1 Step -2
        checksum% = checksum% + Val(Mid$(chaine$, i%, 1))
      Next
      checksum% = checksum% * 3
      For i% = 6 To 1 Step -2
        checksum% = checksum% + Val(Mid$(chaine$, i%, 1))
      Next
      chaine$ = chaine$ & (10 - checksum% Mod 10) Mod 10
      'Les 4 premier chiffre viennent de la table A
      'The first 4 digits come from table A
      CodeBarre$ = ":"   'Ajout marque de début / Add start mark
      For i% = 1 To 4
         CodeBarre$ = CodeBarre$ & Chr$(65 + Val(Mid$(chaine$, i%, 1)))
      Next
      CodeBarre$ = CodeBarre$ & "*"   'Ajout séparateur central / Add middle separator
      For i% = 5 To 8
        CodeBarre$ = CodeBarre$ & Chr$(97 + Val(Mid$(chaine$, i%, 1)))
      Next
      CodeBarre$ = CodeBarre$ & "+"   'Ajout de la marque de fin / Add end mark
      EAN8$ = CodeBarre$
    End If
  End If
End Function

Public Function EAN13$(chaine$)
  'Cette fonction est régie par la Licence Générale Publique Amoindrie GNU (GNU LGPL)
  'This function is governed by the GNU Lesser General Public License (GNU LGPL)
  'V 1.1.1
  'Paramètres : une chaine de 12 chiffres
  'Parameters : a 12 digits length string
  'Retour : * une chaine qui, affichée avec la police EAN13.TTF, donne le code barre
  '         * une chaine vide si paramètre fourni incorrect
  'Return : * a string which give the bar code when it is dispayed with EAN13.TTF font
  '         * an empty string if the supplied parameter is no good
  Dim i%, checksum%, first%, CodeBarre$, tableA As Boolean
  EAN13$ = ""
  'Vérifier qu'il y a 12 caractères
  'Check for 12 characters
  If Len(chaine$) = 12 Then
    'Et que ce sont bien des chiffres
    'And they are really digits
    For i% = 1 To 12
      If Asc(Mid$(chaine$, i%, 1)) < 48 Or Asc(Mid$(chaine$, i%, 1)) > 57 Then
        i% = 0
        Exit For
      End If
    Next
    If i% = 13 Then
      'Calcul de la clé de contrôle
      'Calculation of the checksum
      For i% = 12 To 1 Step -2
        checksum% = checksum% + Val(Mid$(chaine$, i%, 1))
      Next
      checksum% = checksum% * 3
      For i% = 11 To 1 Step -2
        checksum% = checksum% + Val(Mid$(chaine$, i%, 1))
      Next
      chaine$ = chaine$ & (10 - checksum% Mod 10) Mod 10
      'Le premier chiffre est pris tel quel, le deuxième vient de la table A
      'The first digit is taken just as it is, the second one come from table A
      CodeBarre$ = Left$(chaine$, 1) & Chr$(65 + Val(Mid$(chaine$, 2, 1)))
      first% = Val(Left$(chaine$, 1))
      For i% = 3 To 7
        tableA = False
         Select Case i%
         Case 3
           Select Case first%
           Case 0 To 3
             tableA = True
           End Select
         Case 4
           Select Case first%
           Case 0, 4, 7, 8
             tableA = True
           End Select
         Case 5
           Select Case first%
           Case 0, 1, 4, 5, 9
             tableA = True
           End Select
         Case 6
           Select Case first%
           Case 0, 2, 5, 6, 7
             tableA = True
           End Select
         Case 7
           Select Case first%
           Case 0, 3, 6, 8, 9
             tableA = True
           End Select
         End Select
       If tableA Then
         CodeBarre$ = CodeBarre$ & Chr$(65 + Val(Mid$(chaine$, i%, 1)))
       Else
         CodeBarre$ = CodeBarre$ & Chr$(75 + Val(Mid$(chaine$, i%, 1)))
       End If
     Next
      CodeBarre$ = CodeBarre$ & "*"   'Ajout séparateur central / Add middle separator
      For i% = 8 To 13
        CodeBarre$ = CodeBarre$ & Chr$(97 + Val(Mid$(chaine$, i%, 1)))
      Next
      CodeBarre$ = CodeBarre$ & "+"   'Ajout de la marque de fin / Add end mark
      EAN13$ = CodeBarre$
    End If
  End If
End Function

Public Function AddOn$(chaine$)
  'Cette fonction est régie par la Licence Générale Publique Amoindrie GNU (GNU LGPL)
  'This function is governed by the GNU Lesser General Public License (GNU LGPL)
  'V 1.0
  'Paramètres : une chaine de 2 ou 5 chiffres
  'Parameters : A 2 or 5 digits length string
  'Retour : * une chaine qui, affichée avec la police EAN13.TTF, donne le code barre supplementaire
  '         * une chaine vide si paramètre fourni incorrect
  'Return : * a string which give the add-on bar code when it is dispayed with EAN13.TTF font
  '         * an empty string if the supplied parameter is no good
  Dim i%, checksum%, first%, CodeBarre$, tableA As Boolean
  AddOn$ = ""
  'Vérifier qu'il y a 2 ou 5 caractères
  'Check for 2 or 5 characters
  If Len(chaine$) = 2 Or Len(chaine$) = 5 Then
    'Et que ce sont bien des chiffres
    'And it is digits
    For i% = 1 To Len(chaine$)
      If Asc(Mid$(chaine$, i%, 1)) < 48 Or Asc(Mid$(chaine$, i%, 1)) > 57 Then
        Exit Function
      End If
    Next
    'Calcul de la clé de contrôle
    'Checksum calculation
    If Len(chaine$) = 2 Then
      checksum% = 10 + chaine$ Mod 4 'On augmente la checksum de 10 pour faciliter les tests plus bas / We add 10 to the checksum for make easier the below tests
    Else
      For i% = 1 To 5 Step 2
        checksum% = checksum% + Val(Mid$(chaine$, i%, 1))
      Next
      checksum% = (checksum% * 3 + Val(Mid$(chaine$, 2, 1)) * 9 + Val(Mid$(chaine$, 4, 1)) * 9) Mod 10
    End If
    AddOn$ = "["
    For i% = 1 To Len(chaine$)
      tableA = False
      Select Case i%
      Case 1
        Select Case checksum%
        Case 4 To 9, 10, 11
          tableA = True
        End Select
      Case 2
        Select Case checksum%
        Case 1, 2, 3, 5, 6, 9, 10, 12
          tableA = True
        End Select
      Case 3
        Select Case checksum%
        Case 0, 2, 3, 6, 7, 8
          tableA = True
        End Select
      Case 4
        Select Case checksum%
        Case 0, 1, 3, 4, 8, 9
          tableA = True
        End Select
      Case 5
        Select Case checksum%
        Case 0, 1, 2, 4, 5, 7
          tableA = True
        End Select
      End Select
      If tableA Then
        AddOn$ = AddOn$ & Chr$(65 + Val(Mid$(chaine$, i%, 1)))
      Else
        AddOn$ = AddOn$ & Chr$(75 + Val(Mid$(chaine$, i%, 1)))
      End If
      If (Len(chaine$) = 2 And i% = 1) Or (Len(chaine$) = 5 And i% < 5) Then AddOn$ = AddOn$ & Chr$(92) 'Ajout du séparateur de caractère / Add character separator
    Next
  End If
End Function

Re: BarCode Generator EAN 8-13 (No Plugins)

Publicado: 22 Nov 2019 19:14
por usamakey
brilliant as always
tnks pablo :yes: :yes:

Re: BarCode Generator EAN 8-13 (No Plugins)

Publicado: 25 Nov 2019 15:03
por sendai
thanks for sharing

Re: BarCode Generator EAN 8-13 (No Plugins)

Publicado: 07 Dic 2019 04:22
por luasqlite
Destrozaosss Maestro Rochi......iba en serio lo de los pm......

Re: BarCode Generator EAN 8-13 (No Plugins)

Publicado: 12 Dic 2019 13:21
por amedeorossi
thanks

Re: BarCode Generator EAN 8-13 (No Plugins)

Publicado: 12 Abr 2020 12:35
por dangngocnguyenit
thanks

Re: BarCode Generator EAN 8-13 (No Plugins)

Publicado: 14 Abr 2020 02:16
por cesoft
:pc: :pc: :pc: :friends:

Re: BarCode Generator EAN 8-13 (No Plugins)

Publicado: 11 May 2020 06:50
por lolaenzapato
:friends:

Re: BarCode Generator EAN 8-13 (No Plugins)

Publicado: 07 May 2021 08:21
por Y2K38
:awthanks-1414025485:

Re: BarCode Generator EAN 8-13 (No Plugins)

Publicado: 23 May 2021 12:57
por Robby
Gracias

Re: BarCode Generator EAN 8-13 (No Plugins)

Publicado: 19 Ago 2021 23:45
por lumer2020
fgdddddddddddddddd

Re: BarCode Generator EAN 8-13 (No Plugins)

Publicado: 25 Sep 2021 05:51
por lumer5050
:dancing: :dancing: :dancing: :dancing: :dancing: :dancing: :dancing: :dancing: :dancing: