Página 2 de 2

Enviado: 17 Jul 2007 14:18
por rbonotto

Código: Selecionar todos

function CalcEAN13(cBase) 
local nSum := 0 
local i 
for i := 1 to 12 
    nSum += Val(SubStr(cBase,i,1)) * if(i%2>0,1,3) 
next 
return if(nSum%10=0, "0", Str(((Int(nSum/10)+1)*10)-nSum,1)
)

Não entendi como usar esta função, tenho um sequencia de numeros, tipo: mYvar := 12345678912 ai chamo a funcao CalcEAN13(mYvar)

E ai...não entendi como somar o digito verificador..., este return no fim da função retorna o que ??

Devo adicionar mYvar + nSum ???

Enviado: 17 Jul 2007 14:30
por Maligno
rbonotto escreveu:E ai...não entendi como somar o digito verificador..., este return no fim da função retorna o que ??
Ao passar pra função uma string com os 12 primeiros dígitos do EAN, ela retornará o DV deste EAN. Aí é só adicionar a ele pra imprimir os 13 dígitos corretos.

Enviado: 17 Jul 2007 15:20
por rbonotto
Maligno escreveu:
rbonotto escreveu:E ai...não entendi como somar o digito verificador..., este return no fim da função retorna o que ??
Ao passar pra função uma string com os 12 primeiros dígitos do EAN, ela retornará o DV deste EAN. Aí é só adicionar a ele pra imprimir os 13 dígitos corretos.
Desculpe minha burrice, mas como devo proceder...a variavel nSum é o digito verificador ? deve ser somada a minha variavel ? teria um exemplo para de codigo para colocar aqui ??

Enviado: 17 Jul 2007 15:23
por rbonotto
Não existe outro método de imprimir códigos de barras que não possuam digitos verificadores ? tipo passo uma string e ele imprime os codigos de barras correspondentes ??

Pleeeeeeaaaaseeeee :D

Enviado: 17 Jul 2007 15:25
por Maligno
Vamos supor que o seu número aleatório apareça como uma seqüência de 12 dígitos: 123456789012, que está na variável cEAN. O número completo será o resultado de cEAN+CalcEAN13(cEAN), com 13 dígitos. Daí é só imprimir.

Enviado: 17 Jul 2007 15:31
por Maligno
rbonotto escreveu:Não existe outro método de imprimir códigos de barras que não possuam digitos verificadores ?
Depende do padrão escolhido e disponível no equipamento. O EAN13 precisa do DV calculado. Mas esse é o menor dos problemas. Se a largura do código (12 dígitos livres) servir, use-o à vontade.

Enviado: 17 Jul 2007 15:46
por rbonotto
Vamos supor que o seu número aleatório apareça como uma seqüência de 12 dígitos: 123456789012, que está na variável cEAN. O número completo será o resultado de cEAN+CalcEAN13(cEAN), com 13 dígitos. Daí é só imprimir.

Ufas !!! deu certo agora !

Muito obrigado mesmo, e......valeu pela paciencia mestre ! :)Pos

Enviado: 18 Jul 2007 03:18
por Maligno
Que bom que deu certo. Fico contente. Agora, uma curiosidade minha: quanto custou essa impressora?

Enviado: 18 Jul 2007 14:55
por ederxc
Se precisar de alghum exclarecimento sobre DV

checa aqui



https://pctoledo.org/forum/viewtopic.php?t=5841 :D