gerar numero com 13 digitos

Delphi

05/06/2005

Amigos preciso gerar um numero com 13 digitos da seguinte forma:
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

Dpinho

Curtidas 0

Respostas

Marco Salles

Marco Salles

05/06/2005

Não serve :?: :?: :?:

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
Dpinho

Dpinho

05/06/2005

function TForm_Produtos.RetornarNumeroTrezeDigitos:real;
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
Marco Salles

Marco Salles

05/06/2005

Fiz algumas alterações para que o numero retorne sempre 13 digitos


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

ficou muito bom, mas esta dando erro no digito verificador.

Que digito verificadoe é este amigo

e como posso imprimir a etiqueta.. algem pode ajudar por favor


Voce conhece este Site ???

http://www.veloso.kit.net/download.html


GOSTEI 0
Dpinho

Dpinho

05/06/2005

tem um função de verificar se o codigo de barras esta correto ele faz os calculos e retornar que o numero não é valido

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
Gandalf.nho

Gandalf.nho

05/06/2005

Eu sugiro tb o FBarcode [url]http://mitglied.lycos.de/AJSchmidt/[/url]


GOSTEI 0
Marco Salles

Marco Salles

05/06/2005

eu nun entendo :cry: :cry: :cry:

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

so não quero que apareça os zeros. os zeros devem ser substituidos por numero.


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
POSTAR