Club Builder - Foros de discusión Club Builder
Foro de C++Builder en español
 
 FAQFAQ   BuscarBuscar   MiembrosMiembros   Grupos de UsuariosGrupos de Usuarios   RegistrarseRegistrarse 
 PerfilPerfil   Entra para ver tus mensajes privadosEntra para ver tus mensajes privados   EntrarEntrar 

EAN 13

 
Publicar nuevo tema   Responder al tema    Foros de discusión -> Consultas
Ver tema anterior :: Ver tema siguiente  
Autor Mensaje
Mensaje    Asunto: EAN 13 Responder citando

Alguien dispone de una función para transformar un codigo de barras EAN13 en la cadena de texto que con la fuente EAN13 permite que se visualize tal y como los conocemos.

Gracias.
Volver arriba
Ver perfil de usuario Enviar mensaje privado
Mensaje    Asunto: Responder citando

El lector de codigo de barras decodifica EL CODIGO QUE TENGA ENFRENTE y lo convierte a "teclado"
_________________
Ing. Gabriel Góngora Navarrete
TouchSoftwares Inc

http://www.touchsoftwares.com
Volver arriba
Ver perfil de usuario Enviar mensaje privado Visitar sitio web del autor MSN Messenger
Mensaje    Asunto: Gracias Responder citando

Me refiero a que he de generar EAN13 tengo un numero, pongamos que tengo :

779123401234 y quiero imprimir su correspondiente codigo de barras!!

He de poner el codigo de control detras i despues transformar los numeros al formato que la fuente EAN13 reconoce para poder imprimir.

Pos eso, que no encuentro nada ....
Volver arriba
Ver perfil de usuario Enviar mensaje privado
Mensaje    Asunto: Responder citando

Santo Google:

http://www.theclub.com.br/site/download/Arq.aspx?Ling=03&Cat=25

Codigo fuente en VB

http://www.freevbcode.com/ShowCode.asp?ID=6589

Debe hacer algun ejemplo mas, sigue buscando en google

AJA!!!..LO ENCONTRE..ESTA EN DELPHI..

http://members.ozemail.com.au/~mtntop/inde2.htm

Suerte
_________________
Ing. Gabriel Góngora Navarrete
TouchSoftwares Inc

http://www.touchsoftwares.com
Volver arriba
Ver perfil de usuario Enviar mensaje privado Visitar sitio web del autor MSN Messenger
Mensaje    Asunto: Responder citando

Yo lo tengo hecho en builder, lo traduje de un código en FoxPro, y funciona perfectamente lo he probado imprimiendo con Laser y luego leyendolo con lectores de calidad tipo Metrologic. En cuanto encuentre el código lo pego por aquí.

ciao.
_________________
OJO!! Ya tenemos subforo de Bases de Datos!!
Gracias a los admins.
Volver arriba
Ver perfil de usuario Enviar mensaje privado Visitar sitio web del autor MSN Messenger
Mensaje    Asunto: GrACIAS Responder citando

Yo también he encontrado un codigo pero lo de STUFF() me ha detenido!!

Código:

FUNCTION _StrToEan13(tcString, tlCheckD)

   LOCAL lcLat, lcMed, lcRet, lcJuego, ;
      lcIni, lcResto, lcCod, ;
      lnI, lnCheckSum, lnAux, laJuego(10), lnPri

   lcRet=ALLTRIM(tcString)

   IF LEN(lcRet) # 12
      *--- Error en parámetro
      *--- debe tener un len = 12
      RETURN ""
   ENDIF

   *--- Genero dígito de control
   lnCheckSum=0
   FOR lnI = 1 TO 12
      IF MOD(lnI,2) = 0
         lnCheckSum = lnCheckSum + VAL(SUBS(lcRet,lnI,1)) * 3
      ELSE
         lnCheckSum = lnCheckSum + VAL(SUBS(lcRet,lnI,1)) * 1
      ENDIF
   ENDFOR
   lnAux = MOD(lnCheckSum,10)
   lcRet = lcRet + ALLTRIM(STR(IIF(lnAux = 0, 0, 10-lnAux)))

   IF tlCheckD
      *--- Si solo genero dígito de control
      RETURN lcRet
   ENDIF

   *--- Para imprimir con fuente True Type EAN13
   *--- 1er. dígito (lnPri)
   lnPri = VAL(LEFT(lcRet, 1))
   *--- Tabla de Juegos de Caracteres
   *--- según "lnPri" (¡NO CAMBIAR!)
   laJuego(1) = "AAAAAACCCCCC"   && 0
   laJuego(2) = "AABABBCCCCCC"   && 1
   laJuego(3) = "AABBABCCCCCC"   && 2
   laJuego(4) = "AABBBACCCCCC"   && 3
   laJuego(5) = "ABAABBCCCCCC"   && 4
   laJuego(6) = "ABBAABCCCCCC"   && 5
   laJuego(7) = "ABBBAACCCCCC"   && 6
   laJuego(8) = "ABABABCCCCCC"   && 7
   laJuego(9) = "ABABBACCCCCC"   && 8
   laJuego(10) = "ABBABACCCCCC"   && 9

   *--- Caracter inicial (fuera del código)
   lcIni = CHR(lnPri + 35)
   *--- Caracteres lateral y central
   lcLat = CHR(33)
   lcMed = CHR(45)

   *--- Resto de los caracteres
   lcResto = SUBS(lcRet, 2, 12)
   FOR lnI = 1 TO 12
      lcJuego = SUBS(laJuego(lnPri + 1), lnI, 1)
      DO CASE
         CASE lcJuego = "A"
            lcResto = STUFF(lcResto, lnI, 1, CHR(VAL(SUBS(lcResto, lnI, 1))+48))
         CASE lcJuego = "B"
            lcResto = STUFF(lcResto, lnI, 1, CHR(VAL(SUBS(lcResto, lnI, 1))+65))
         CASE lcJuego = "C"
            lcResto = STUFF(lcResto, lnI, 1, CHR(VAL(SUBS(lcResto, lnI, 1))+97))
      ENDCASE
   ENDFOR

   *--- Armo código
   lcCod = lcIni + lcLat + SUBS(lcResto,1,6) + lcMed + SUBS(lcResto,7,6) + lcLat
   RETURN lcCod
ENDFUNC


Gracias por vuestra ayuda, a ver si la encuentras XyVy yo voy mirando la de DELPHI a ver si hoy puedo dormir tranquilo. Wink
PD: Que fuente es la correcta, porque encuentro varias, tipo :
BC EAN13 HR
BC EAN13 TALL

Gracias de nuevo!!
Volver arriba
Ver perfil de usuario Enviar mensaje privado
Mensaje    Asunto: Bueno!! Responder citando

La cosa quedaria así:

Función que genera un codigo de barras EAN13:

Código:

//---------------------------------------------------------------------------
AnsiString TForm1::StrToEan13(AnsiString tcString,bool tlCheckD)
{
   int lnCheckSum=0;AnsiString retorno;
   TStringList *laJuego = new TStringList;
   int lnAux,lnPri;
   char lcIni,lcLat,lcMed,lcJuego;
   AnsiString lcResto;
   AnsiString cadena= tcString.Trim();
   if(cadena.Length()!=12) return "";


   for(int i=1;i<=12;i++){
        if(i % 2 ==0 ) lnCheckSum = lnCheckSum + (cadena.SubString(i,1).ToInt()*3);
        else lnCheckSum = lnCheckSum + (cadena.SubString(i,1).ToInt()*1);
   }
   lnAux  = lnCheckSum % 10;
   if(lnAux==0) cadena = cadena + AnsiString(0);
   else cadena= cadena + AnsiString(10-lnAux);
   lnPri = cadena.SubString(1,1).ToInt();
   laJuego->Add("!!");
   laJuego->Add("AAAAAACCCCCC");
   laJuego->Add("AABABBCCCCCC");
   laJuego->Add("AABBABCCCCCC");
   laJuego->Add("AABBBACCCCCC");
   laJuego->Add("ABAABBCCCCCC");
   laJuego->Add("ABBAABCCCCCC");
   laJuego->Add("ABBBAACCCCCC");
   laJuego->Add("ABABABCCCCCC");
   laJuego->Add("ABABBACCCCCC");
   laJuego->Add("ABBABACCCCCC");
   lcIni = Char(lnPri + 35);
   lcLat = Char(33);
   lcMed = Char(45);
   AnsiString lcJoc;
   lcResto = cadena.SubString(2,12);
    for(int i=1;i<=12;i++){
       lcJoc = laJuego->Strings[lnPri+1].SubString(i,1);
       if(lcJoc=="A"){
             lcResto = lcResto.Insert(Char(lcResto.SubString(i,1).ToInt()+48),i);
             lcResto = lcResto.Delete(i+1,1);
       }
       if(lcJoc=="B"){
             lcResto = lcResto.Insert(Char(lcResto.SubString(i,1).ToInt()+65),i);
             lcResto = lcResto.Delete(i+1,1);
       }
       if(lcJoc=="C"){
             lcResto = lcResto.Insert(Char(lcResto.SubString(i,1).ToInt()+97),i);
             lcResto = lcResto.Delete(i+1,1);
       }

    }
    retorno = AnsiString(lcIni)+AnsiString(lcLat)+ lcResto.SubString(1,6)+AnsiString(lcMed)+lcResto.SubString(7,6)+ AnsiString(lcLat);
    return retorno;
}


Taducida de una función en VisualFoxPro de Luis María Guayán - Tucumán - Argentina

Se usa por ejemplo : Edit3->Text = this->SrToEan13("978843057790",true); Como podeis ver el booleano de momento està de adorno, lo he dejado para poder quitar o no el ultimo digito del Ean13 si este nos lo dan con el digito de control incluido.


Con el tipo de letra EanP36Tt o EanP72Tt. La cosa funciona!!!
Eso si de momento no puedo imprimir por culpa de la dichosa configuración de QuickReport y una laser Xerox!!
Volver arriba
Ver perfil de usuario Enviar mensaje privado
Mostrar mensajes de anteriores:   
Cambiar a:  
No puedes publicar temas nuevos en este foro
No puedes responder a temas en este foro
No puedes editar tus mensajes en este foro
No puedes borrar tus mensajes en este foro
No puedes votar en las encuestas de este foro


Hosting WordPress Indedmedia desde 3,99 €
© 2002–2026 Club Builder · Funciona con phpBB.