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 ??
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.
[]'s
Maligno
--- Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.
--- Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
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 ??
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 ??
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.
[]'s
Maligno
--- Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.
--- Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
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.
[]'s
Maligno
--- Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.
--- Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
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
Que bom que deu certo. Fico contente. Agora, uma curiosidade minha: quanto custou essa impressora?
[]'s
Maligno
--- Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.
--- Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!