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

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 