Fórum gerar numero com 13 digitos #283852
05/06/2005
0
os 3 Primeiros deve ser constante tipo 890
o campo de minha tabela codigo tem um tamanho de 10 digitos e devo utilizar ele, porem ele é complentado com zero ficando assim 0000007852
preciso desenvolver um função que gere um numero sem repetir no banco utilizando a constante mais o codigo do produto é para a etiqueta de codigo de barras, so não quero que apareça os zeros.
os zeros devem ser substituidos por numero.
se alguem puder ajudar agradeço
Claudio Pinho
Dpinho
Curtir tópico
+ 0Posts
05/06/2005
Marco Salles
function RetornarNumeroTrezeDigitos:real; var Texto:String; i:Integer; begin Texto:=´890´; i:=1; randomize; while i<= 6 do begin texto:=texto+inttostr(Random(9)); i:=i+1; end; Texto:=Texto+´7852´; result:=strtoFloat(Texto); end;
e para chamar :
procedure TForm1.Button1Click(Sender: TObject); begin showmessage(Floattostr(RetornarNumeroTrezeDigitos)); end;
Gostei + 0
06/06/2005
Dpinho
var
Texto:String;
i:Integer;
c:Integer;
begin
Texto:=´789´;
i:=1;
randomize;
while i<= (10- length(db_codigo.text)) do
begin
texto:=texto+inttostr(Random(9));
i:=i+1;
end;
Texto:=Texto+ db_codigo.Text;
result:=strtoFloat(Texto);
end;
Fiz algumas alterações para que o numero retorne sempre 13 digitos, ficou muito bom, mas esta dando erro no digito verificador.
e como posso imprimir a etiqueta..
algem pode ajudar por favor
Gostei + 0
06/06/2005
Marco Salles
Quando eu lhe passei esta rotina , pensei que o final fosse sempre contante igua a ´7852´.. E vejo agora que não é.. Mas deu para voce ter uma idéia , isto ja é um bom começo
Que digito verificadoe é este amigo
Voce conhece este Site ???
http://www.veloso.kit.net/download.html
Gostei + 0
06/06/2005
Dpinho
veja a função:
function TForm1.DV(Codigo: String) : Integer;
var
i, SomaPar : Integer;
begin
// inicializa as variáveis de apoio
SomaPar := 0;
Result := 0;
for i := 1 to 6 do
begin
Result := Result + StrToInt(Codigo[2*i-1]); // soma dos digitos das posições ímpares a partir do 3º
SomaPar := SomaPar + StrToInt(Codigo[2*i]); // soma dos digitos das posições pares
end;
// faço a soma ponderada (cada dígito da posição par é multiplicado por 3)
Result := Result + 3 * SomaPar;
// o DV é o menor inteiro que somado ao resultado, dê um múltiplo de 10
// exemplo : se resultado = 76, então o DV=4, pois resultado + DV = 80
Result := Ceil(Result/10)*10 - Result;
end;
Quanto ao site conheço, mas quando tento pegar os componentes diz que a pagina não pode ser exibida
Gostei + 0
06/06/2005
Gandalf.nho
Gostei + 0
06/06/2005
Marco Salles
se o numero gerado aleatoriamente tem que passar pelo crivo de uma função , que determina se o numero gerado é válido ou não...Então voce deveria ter dito isto no enunciado
deveria ser assim:::
so não quero que apareça os zeros. os zeros devem ser substituidos por numero e cuja combinação desse numeros atendam a rotina verificadora de codigos de barra abaixo
É isto que voe quer amigo :?: :?: :?: ...
Qual são os digitos que podem ser considerados constantes no seu codigo de barra :?: :?:
Alem do ´789´ Tem mais algum que é determinado fixo :?:
Tem alguns digitos que são determinados pelo usuário :?: :?:
quais seriam a quantidade desse digitos :?: :?: :?:
etc...
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)