Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Otros entornos y lenguajes > PHP
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 06-10-2004
jostrix jostrix is offline
Miembro
 
Registrado: ago 2003
Posts: 21
Poder: 0
jostrix Va por buen camino
Codigos de Barras

Hola q tal a todos, me encuentro ante una situacion un poco dificil, necesito de su ayuda, lo q sucede es q nunca he trabajado con codigos de barras, y no se q tan complicado sea, si alguien puede decirme o recomendarme algun texto q me permite entender su funcionamiento en PHP y delphi, les agradecere eternamente.

Otra es q anteriormente entre estas paginas existia un componente q me permitia desarrollar codigos de barras, pero no lo he encontrado. Necesito desarrollar un pequeño programa q genere el codigo de barras en formato EAN, basado en las claves principales de mi b.d. de clientes. Alguien me puede orientar
Responder Con Cita
  #2  
Antiguo 06-10-2004
Avatar de vic_ia
vic_ia vic_ia is offline
Miembro
 
Registrado: ene 2004
Posts: 238
Poder: 21
vic_ia Va por buen camino
hola...

los unicos componentes que he localizado para la generación de codigo de barras son de pago, algunos de ellos en componentes de codigo de barras EAN128; otra opcion que tienes es utilizar alguna fuente del codigo de barras y hacer tu mismo el calculo de los códigos de control; en EAN128
puedes encontrar como general los codigos de control y al mandarlos a imprimir o visualizar utilizar una fuente de codigos de barras EAN128 (igualmente solo he encontrado fonts de pago,... pero sigo buscando alguna "free")...

saludos..
Responder Con Cita
  #3  
Antiguo 16-10-2004
jostrix jostrix is offline
Miembro
 
Registrado: ago 2003
Posts: 21
Poder: 0
jostrix Va por buen camino
Gracias por Responder (nueva duda)

Muchas gracias por responder mis dudas, cheque las paginas q me indicaste y estuve descargando unas demos, y pues buscando encontre el siguiente codigo q te desarrolla en EAN 8 y 13, tiene un errorcito al tratar con EAN 13, cuando el caluclo para el digito verificador es mayor q 100, pero q se resuelve con un nuevo mod de 10 sobre el resultado obtenido, (bueno eso creo, lo he hecho asi y no he tenido broncas por el momento)I
Código Delphi [-]
   unit EAN; 
   
   interface 
   
   uses 
     Windows, SysUtils, Forms, Dialogs, StdCtrls, ExtCtrls, Classes, Controls; 
   
   const 
   EAN_izqA : array[0..9] of PChar=('0001101','0011001','0010011','0111101','0100011',
  '0110001','0101111','0111011','0110111','0001011'); 
   EAN_izqB : array[0..9] of PChar=('0100111','0110011','0011011','0100001','0011101',
  '0111001','0000101','0010001','0001001','0010111'); 
   EAN_dcha : array[0..9] of PChar=('1110010','1100110','1101100','1000010','1011100',
  '1001110','1010000','1000100','1001000','1110100'); 
     CodificaIzq : array[0..9] of PChar=('AAAAA','ABABB','ABBAB','ABBBA','BAABB',
 'BBAAB','BBBAA','BABAB','BABBA','BBABA'); 
   
   type 
     TFCodigoBarras = class(TForm) 
       Label1: TLabel; 
       Edit1: TEdit; 
       Panel1: TPanel; 
       PaintBox1: TImage; 
       procedure Edit1KeyPress(Sender: TObject; var Key: Char); 
     private 
       { Private declarations } 
     public 
       { Public declarations } 
       // procedimiento que codifica el número en un nº binario 
       procedure Codifica(num : string); 
       // procedimiento para dibujar el cód. de barras a partir del nº binario 
       procedure Dibujar(matrix : string); 
       // procedimiento para validar-corregir los códigos 
       procedure EANCorrecto(var num : string); 
     end; 
   
   var 
     FCodigoBarras: TFCodigoBarras; 
   
   implementation 
   
   {$R *.DFM} 
   
   procedure TFCodigoBarras.EANCorrecto(var num : string); 
   var 
     i,N : byte; 
     sum : integer; 
     flag : byte; 
   begin 
     sum:=0; 
     N:=Length(num)-1; 
     for i:=1 to N do 
     begin 
       if (i mod 2)=0 then 
       begin 
         if N=12 then 
           sum:=sum+StrToInt(num[i])*3 
         else 
           sum:=sum+StrToInt(num[i]); 
       end 
       else 
       begin 
         if N=12 then 
           sum:=sum+StrToInt(num[i]) 
         else 
           sum:=sum+StrToInt(num[i])*3; 
       end; 
     end; 
     if sum>99 then 
       Flag:=10-(sum mod 100) 
     else 
       Flag:=10-(sum mod 10); 
     if Flag=10 then Flag:=0; 
     if not(StrToInt(num[N+1])=flag) then 
       num:=copy(num,1,length(num)-1)+IntToStr(Flag); 
   end; 
   
   procedure TFCodigoBarras.Codifica(num : string); 
   var 
     matrix : string; 
     i : integer; 
   begin 
     num:=Edit1.Text; 
     matrix:=''; 
     case Length(num) of 
     13: begin 
         EANCorrecto(num); 
         Edit1.Text:=num; 
         matrix:=matrix+'x0x'; // barra inicio 
         matrix:=matrix+EAN_izqA[StrToInt(num[2])]; 
         for i:=3 to 7 do 
           if CodificaIzq[StrToInt(num[1])][i-3]='A' then 
             matrix:=matrix+EAN_izqA[StrToInt(num[i])] 
           else 
             matrix:=matrix+EAN_izqB[StrToInt(num[i])]; 
         matrix:=matrix+'0x0x0'; // barra central 
         matrix:=matrix+EAN_dcha[StrToInt(num[8])]; 
         matrix:=matrix+EAN_dcha[StrToInt(num[9])]; 
         matrix:=matrix+EAN_dcha[StrToInt(num[10])]; 
         matrix:=matrix+EAN_dcha[StrToInt(num[11])]; 
         matrix:=matrix+EAN_dcha[StrToInt(num[12])]; 
         matrix:=matrix+EAN_dcha[StrToInt(num[13])]; 
         matrix:=matrix+'x0x'; // barra final 
         Dibujar(Matrix); 
       end; 
     8: begin 
         EANCorrecto(num); 
         Edit1.Text:=num; 
         matrix:=matrix+'x0x'; 
         matrix:=matrix+EAN_izqA[StrToInt(num[1])]; 
         matrix:=matrix+EAN_izqA[StrToInt(num[2])]; 
         matrix:=matrix+EAN_izqA[StrToInt(num[3])]; 
         matrix:=matrix+EAN_izqA[StrToInt(num[4])]; 
         matrix:=matrix+'0x0x0'; 
         matrix:=matrix+EAN_dcha[StrToInt(num[5])]; 
         matrix:=matrix+EAN_dcha[StrToInt(num[6])]; 
         matrix:=matrix+EAN_dcha[StrToInt(num[7])]; 
         matrix:=matrix+EAN_dcha[StrToInt(num[8])]; 
         matrix:=matrix+'x0x'; 
         Dibujar(Matrix); 
       end 
     else 
       ShowMessage('LONGITUD DE CODIGO NO VALIDA'); 
     end; 
   
   end; 
   
   procedure TFCodigoBarras.Dibujar(matrix : string); 
   var 
     i : integer; 
   begin 
     PaintBox1.Canvas.Brush.Color:=clWhite; 
     PaintBox1.Canvas.FillRect(Rect(0,0,PaintBox1.Width,PaintBox1.Height)); 
     PaintBox1.Canvas.Pen.Color:=clBlack; 
   
     for i:=1 to Length(Matrix) do 
       if matrix[i]='1' then 
         PaintBox1.Canvas.PolyLine([Point(10+i,10),Point(10+i,50)]) 
       else 
       if matrix[i]='x' then 
         PaintBox1.Canvas.PolyLine([Point(10+i,10),Point(10+i,55)]); 
   
     if Length(Edit1.Text)=13 then 
     begin 
         PaintBox1.Canvas.TextOut(3,50,Edit1.Text[1]); 
         PaintBox1.Canvas.TextOut(17,50,copy(Edit1.Text,2,6)); 
         PaintBox1.Canvas.TextOut(63,50,copy(Edit1.Text,8,6)); 
     end 
     else 
     if Length(Edit1.Text)=8 then 
     begin 
         PaintBox1.Canvas.TextOut(16,50,copy(Edit1.Text,1,4)); 
         PaintBox1.Canvas.TextOut(48,50,copy(Edit1.Text,5,4)); 
     end; 
   
     PaintBox1.Picture.SaveToFile('c:\windows\escritorio\BarCode\'+Edit1.Text+'.bmp'); 
   end; 
   
   procedure TFCodigoBarras.Edit1KeyPress(Sender: TObject; var Key: Char); 
   begin 
     if Key=#13 then 
     begin 
       Codifica(Edit1.Text); 
       Edit1.SelStart:=0; 
       Edit1.SelLength:=Length(Edit1.Text); 
     end; 
   end; 
   
   end.

Ahora mi duda es, tengo una tabla relacionada con mis clientes en donde la clave principal es la q quiero el codigo genere su codigo de barras, el problema es q quiero q el sistema genere automaticamente la clave, pense en utilizar un campo Auto_increment, la bronca es q con este numero no se prevee lo del digito verificador..., entonces pense en un campo auto_increment y a partir de ese calcular el digio verificador y su concatenacion q sea el resultado... Esto es correcto? o existe una forma mas sencilla de hacerlo? y por otra parte q es mejor usar EAN 8 o EAN13, y en dado caso por q numero es recomendable inicializar mi campo auto_increment

Última edición por marcoszorrilla fecha: 16-10-2004 a las 23:04:22. Razón: Añadir etiquetas
Responder Con Cita
  #4  
Antiguo 17-10-2004
Avatar de Emilio
*Emilio* Emilio is offline
Capo
 
Registrado: may 2003
Ubicación: Palma de Mallorca
Posts: 2.635
Poder: 10
Emilio Va por buen camino
Eso con Delphi vale, pero con PHP de poco te va a servir, una solución válida para PHP es la de hacer uso de True Types, pero debes tener en cuenta que todo ordenador que quiera imprimir etiquetas debe tenerlas instaladas.
__________________
Saludos
Emilio
Responder Con Cita
  #5  
Antiguo 17-10-2004
jostrix jostrix is offline
Miembro
 
Registrado: ago 2003
Posts: 21
Poder: 0
jostrix Va por buen camino
Question Y como consigo esas fuentes TrueType

Pues si seria de gran utilidad saber de donde puedo descargar las fuentes TrueType q mencionas, dado q se conoce el numero de maquinas q puedan ver mi aplicacion eso no seria problema o un link para descargar mis fuentes, pero tambien si alguien puede decirme como le pasa parametros desde php a una aplicacion Delphi y como indico a mi aplicacion delphi q necesita recibir un parametro para poder ser ejecutada
Responder Con Cita
  #6  
Antiguo 21-10-2004
Avatar de Emilio
*Emilio* Emilio is offline
Capo
 
Registrado: may 2003
Ubicación: Palma de Mallorca
Posts: 2.635
Poder: 10
Emilio Va por buen camino
Una simple búsqueda en google con "ean true type font" el primer enlace ya te vale...
http://www.sofotex.com/download/Grap...re/Font_Tools/
__________________
Saludos
Emilio
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro


La franja horaria es GMT +2. Ahora son las 12:23:58.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi