Portal    Foro    Buscar    FAQ    Registrarse    Conectarse


Publicar nuevo tema  Responder al tema 
Página 2 de 3
Ir a la página Anterior  1, 2, 3  Siguiente
 
Código Para Generar Códigos De Barras
Autor Mensaje
Responder citando   Descargar mensaje  
Mensaje Re: Código Para Generar Códigos De Barras 
 
Seguimos


Archivo ean128.frm
Option Explicit
Private Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" (ByVal hWnd As Long, ByVal lpOperation As String, ByVal lpFile As String, ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long
Private CodeClair$, CodeBarre$

Private Sub BTajouter_Click()
  FOchamp.Show vbModal
  Call CodeRefresh
End Sub

Private Sub BTretirer_Click()
  If COliste.ListIndex >= 0 Then COliste.RemoveItem (COliste.ListIndex)
  Call CodeRefresh
End Sub

Private Sub Command1_Click()
  Unload Me
End Sub

Private Sub Command2_Click()
  Clipboard.Clear
  Clipboard.SetText label5.Text
End Sub



Private Sub label1_Click()
  COliste.SetFocus
End Sub

Private Sub Label6_Click()
  ShellExecute Me.hWnd, "open", "http://grandzebu.net", vbNullString, vbNullString, 3
End Sub

Private Sub Label8_Click()
  ShellExecute Me.hWnd, "open", "http://grandzebu.net/informatique/codbar-en/codbar.htm", vbNullString, vbNullString, 3
End Sub

Public Sub CodeRefresh()
  'Construction du code barre / Build the barcode
  Dim i%, dummy$
  If COliste.ListCount > 0 Then
    dummy$ = Chr$(207)
    For i% = 0 To COliste.ListCount - 1
      dummy$ = dummy$ & COliste.List(i%)
    Next
    If Right$(dummy$, 1) = Chr$(207) Then dummy$ = Left$(dummy$, Len(dummy$) - 1)
    dummy$ = ean128$(dummy$)
    label1.Text = dummy$
    label5.Text = dummy$
  Else
    label1.Text = ""
    label5.Text = ""
  End If
End Sub

Public Function ean128$(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 2.0.0
  'Paramètres : une chaine
  'Parameters : a string
  'Retour : * une chaine qui, affichée avec la police CODE128.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 CODE128.TTF font
  '         * an empty string if the supplied parameter is no good
  Dim i%, checksum&, mini%, dummy%, tableB As Boolean
  ean128$ = ""
  If Len(chaine$) > 0 Then
  'Vérifier si caractères valides
  'Check for valid characters
    For i% = 1 To Len(chaine$)
      Select Case Asc(Mid$(chaine$, i%, 1))
      Case 32 To 126, 203, 207
      Case Else
        i% = 0
        Exit For
      End Select
    Next
    'Calculer la chaine de code en optimisant l'usage des tables B et C
    'Calculation of the code string with optimized use of tables B and C
    ean128$ = ""
    tableB = True
    If i% > 0 Then
      i% = 1 'i% devient l'index sur la chaine / i% become the string index
      Do While i% <= Len(chaine$)
        If tableB Then
          'Voir si intéressant de passer en table C / See if interesting to switch to table C
          'Oui pour 4 chiffres au début ou à la fin, sinon pour 6 chiffres / yes for 4 digits at start or end, else if 6 digits
          mini% = IIf(i% = 1 Or i% + 3 = Len(chaine$), 4, 6)
          GoSub TestNumOrFnc1
          If mini% < 0 Then 'Choix table C / Choice of table C
            If i% = 1 Then 'Débuter sur table C / Starting with table C
              ean128$ = Chr$(210)
            Else 'Commuter sur table C / Switch to table C
              ean128$ = ean128$ & Chr$(204)
            End If
            tableB = False
          Else
            If i% = 1 Then ean128$ = Chr$(209) 'Débuter sur table B / Starting with table B
          End If
        End If
        If Not tableB Then
          'On est sur la table C, essayer de traiter 2 chiffres ou Ê/ We are on table C, try to process 2 digits or Ê
          If Asc(Mid$(chaine$, i%, 2)) = 207 Then
            'On traite le Fnc1 (Ê) / We process the Fnc1 (Ê)
            ean128$ = ean128$ & Mid$(chaine$, i%, 1)
            i% = i% + 1
          Else
            mini% = 2
            GoSub TestNum
            If mini% < 0 Then 'OK pour 2 chiffres, les traiter / OK for 2 digits, process it
              dummy% = Val(Mid$(chaine$, i%, 2))
              dummy% = IIf(dummy% < 95, dummy% + 32, dummy% + 105)
              ean128$ = ean128$ & Chr$(dummy%)
              i% = i% + 2
            Else 'On n'a pas 2 chiffres, repasser en table B / We haven't 2 digits, switch to table B
              ean128$ = ean128$ & Chr$(205)
              tableB = True
            End If
          End If
        End If
        If tableB Then
          'Traiter 1 caractère en table B / Process 1 digit with table B
          ean128$ = ean128$ & Mid$(chaine$, i%, 1)
          i% = i% + 1
        End If
      Loop
      'Calcul de la clé de contrôle / Calculation of the checksum
      For i% = 1 To Len(ean128$)
        dummy% = Asc(Mid$(ean128$, i%, 1))
        dummy% = IIf(dummy% < 127, dummy% - 32, dummy% - 105)
        If i% = 1 Then checksum& = dummy%
        checksum& = (checksum& + (i% - 1) * dummy%) Mod 103
      Next
      'Calcul du code ASCII de la clé / Calculation of the checksum ASCII code
      checksum& = IIf(checksum& < 95, checksum& + 32, checksum& + 105)
      'Ajout de la clé et du STOP / Add the checksum and the STOP
      ean128$ = ean128$ & Chr$(checksum&) & Chr$(211)
    End If
  End If
  Exit Function
TestNum:
  'si les mini% caractères à partir de i% sont numériques, alors mini%=0
  'if the mini% characters from i% are numeric, then mini%=0
  mini% = mini% - 1
  If i% + mini% <= Len(chaine$) Then
    Do While mini% >= 0
      If Asc(Mid$(chaine$, i% + mini%, 1)) < 48 Or Asc(Mid$(chaine$, i% + mini%, 1)) > 57 Then Exit Do
      mini% = mini% - 1
    Loop
  End If
Return
TestNumOrFnc1:
  'si les mini% caractères à partir de i% sont numériques ou  FNC1, alors mini%=0
  'if the mini% characters from i% are numeric or Fnc1, then mini%=0
  mini% = mini% - 1
  If i% + mini% <= Len(chaine$) Then
    Do While mini% >= 0
      If (Asc(Mid$(chaine$, i% + mini%, 1)) < 48 Or Asc(Mid$(chaine$, i% + mini%, 1)) > 57) And Asc(Mid$(chaine$, i% + mini%, 1)) <> 207 Then Exit Do
      mini% = mini% - 1
    Loop
  End If
Return
End Function
 


Archivo AppId.cls
Option Explicit
' Variables pour EAN128 / Variables for EAN128
Public id As String
Public desc As String
Public longueur As Integer
Public fixe As Boolean
Public checksum As Boolean
Public alphanum As Boolean
 




Se me olvidaba decir que los identificadores de aplicación más importantes están codificados en el archivo "AIs.txt" .

Si necesitas algo más me lo dices

Saludos
 



 
última edición por ljma el Miercoles, 29 Diciembre 2010, 20:01; editado 1 vez 
ljma - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Código Para Generar Códigos De Barras 
 
Os adjunto también un pdf bastante bueno que encontré con la definición del estándar.

Buennnoo, no me deja subirlo . Os pongo el enlace.

Manual EAN-128

Saludos
 



 
ljma - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Código Para Generar Códigos De Barras 
 
Ok, me lo apunto para cuando tenga un rato libre lo paso a gambas...

Una pregunta, ¿tienes un lector o algo parecido para comprobar que los códigos al imprimirlo son correctos)...

Saludos

Julio
 




===================
Web: SoloGambas
Visita el Curso de Gambas3
Invitacion a Beruby de Jsbsan
 
jsbsan - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Código Para Generar Códigos De Barras 
 
Hola,

Yo no tengo personalmente, pero puedo tener acceso a un lector.


Saludos
 



 
ljma - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Código Para Generar Códigos De Barras 
 
estaba  leyendo los codigos vb y  recordando el indentador
y como el codigo vb se parece al codigo gambas
tal vez se pueda hacer un programa traductor
si bien  traducir proyectos enteros lo veo bastante dificil
en especial los que usen apis y ocx
pienso el algo como un traductor de funciones
un formulario con dos textbox y un boton de traducir como el traductor de google
y lamentablemente no se tanto como para hacerlo yo mismo pero  es una idea
 



 
codificador - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Código Para Generar Códigos De Barras 
 
codificador:

Es una buena idea... pera hay que saber mucho y muy bien los dos lenguajes (sobre todo las diferencias...).

El "indentador", si ves su código, es muy simple.....no tiene nada que ver con lo que pides....sobre todo porque algunos programas de visual basic hace referencias algunas veces al api de windows, cosa que jamás lo vas ha hacer en gambas....

Lo que seria un "puntazo" (buenisimo programa), es hacer un traductor a python (porque es multiplataforma) o a c++...(iria super rápido....)...
pero estamos es el mismo punto... tienes que saber mucho de los dos lenguajes....

Para código muy simple... se pueda hacer.... pero en el momento que usas cosas "particulares del lenguaje" se complica mucho....

A mi todavía me queda por aprender mucho  de gambas2 y de gambas3... y aprovechar todo su potencial....

Saludos...
 




===================
Web: SoloGambas
Visita el Curso de Gambas3
Invitacion a Beruby de Jsbsan
 
jsbsan - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Código Para Generar Códigos De Barras 
 
si hay que saber
si yo supiera mas d gambas lo haria


pero el traductor a C++ o a pyton eso si que lo encuentro casi imposible
esos lenguajes  usan  una "gramatica distinta"

pero vb6 a gambas son mas parecidos
de echo  los comentarios '
y los dim  son iguales

la diferencia  estan en la palabra end y el control de errores
por ejemplo estas  funciones del código de barras no usan apis ni cosas raras por lo tanto podrian ser traducidas

traducir proyectos enteros eso si que seria dificil
y traducir vbnet que esta lleno de  clases y funciones del netframework eso si que seria dificil
 



 
codificador - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Código Para Generar Códigos De Barras 
 
Codificador:

Si tu sabes visual basic 6, puedes hacer una tabla de 3 columnas.... una con el comando de vb6, otra con una pequeña explicación diciendo para que sirve,y otra para poner el comando equivalente en gambas (si tu no sabes, la relleno yo), y asi tener un documento "base", para hacer el traductor....




Nota:
Lo mismo se podria hacer con python....(aunque sera más difícil como bien dices, porque tiene una gramática diferente...)
 




===================
Web: SoloGambas
Visita el Curso de Gambas3
Invitacion a Beruby de Jsbsan
 
última edición por jsbsan el Viernes, 31 Diciembre 2010, 02:20; editado 1 vez 
jsbsan - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Código Para Generar Códigos De Barras 
 
jbsan

ok

que tal si usamos el wikilibro
 



 
codificador - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Código Para Generar Códigos De Barras 
 
¿como se accede al wikilibro?
 




===================
Web: SoloGambas
Visita el Curso de Gambas3
Invitacion a Beruby de Jsbsan
 
jsbsan - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Mostrar mensajes anteriores:    
 
Ocultar¡Este tema fue útil?

 

Elegir valoración:                       

Media de valoración Valoración mínima Valoración máxima Número de valoraciones
0.50 0 1 4
 
OcultarTemas parecidos
Tema Autor Foro Respuestas último mensaje
No hay nuevos mensajes Como Pasar Un Parametro A Java Para Genera... jcontasti General 1 Martes, 26 Octobre 2010, 18:09 Ver último mensaje
soplo
No hay nuevos mensajes Gridview Para Generar Mapa, Mini RPG (prin... sharmnight General 0 Miercoles, 06 Julio 2011, 11:22 Ver último mensaje
sharmnight
No hay nuevos mensajes Componente Para Generar Reportes Gambas3 hertux General 2 Lunes, 01 Agosto 2011, 21:15 Ver último mensaje
hertux
No hay nuevos mensajes Problemas Para Generar Un Reporte Html OneErick General 7 Lunes, 01 Julio 2013, 22:50 Ver último mensaje
OneErick
 

Publicar nuevo tema  Responder al tema  Página 2 de 3
Ir a la página Anterior  1, 2, 3  Siguiente

Usuarios navegando en este tema: 0 registrados, 0 ocultos y 1 invitado
Usuarios registrados conectados: Ninguno


 
Lista de permisos
No puede crear mensajes
No puede responder temas
No puede editar sus mensajes
No puede borrar sus mensajes
No puede votar en encuestas
No puede adjuntar archivos
No puede descargar archivos
No puede publicar eventos en el calendario