Somar string: É possível?

Delphi

02/04/2003

Tenho um campo string com 12 caracteres(String numérica). Tentei transformar para Integer e Double, mas sempre dava erro. O Haroldo Zanela me passou uma rotina mas não funcionou. A pergunta é: Como incrementar em um esse campo(tipo str)? O campo é um código EAN13 q eu defini com str e sempre q criar um novo produto ele deve ser incrementado de um ou se alguém tem idéia melhor eu aceito de coração.
Ele tem 12 caracteres pois o 13º dígito é calculado sozinho(Pelo componente de CodBarra-VERIFICADOR).


Paulo

Paulo

Curtidas 0

Respostas

Evandro Massini

Evandro Massini

02/04/2003

Amigo,

antes de mais nada devo lembra-lo que o código EAN13 é gerado por um algorítmo, por tanto não basta acicionar um número a mais no código anterior. Fazendo isto provavelmente o leitor de código de barras não fará a leitura. Consulte a página da EAN para ter acesso ao algoritmo. Quanto ao fato de tentar transformar o string em integer, provavelmente seria porque o número gerado seria muito grande para um campo integer. Tente transforma-lo em um LongInt.


Até mais...


GOSTEI 0
E_gama

E_gama

02/04/2003

Supondo que o codigo que vc quer incrementar sao os 5 ultimos digitos (numa string de tamanho 12), vc pode utilizar a funcao abaixo, passando seu codigo de 12 digitos como parametro:

function IncrementaCodigo(strCodigo: string): string;
var strFixa: string;
    Codigo : Integer;

begin
  strFixa := Copy(strCodigo, 1, 7); // O que nao se altera
  Codigo  := StrToInt(Trim(Copy(strCodigo, 8, 5))) + 1;

  Result := strFixa + Format(´¬5.5d´, [Codigo]); // Codigo incrementado
end;


Depois disso, basta calcular o digito verificador...


GOSTEI 0
Paulo

Paulo

02/04/2003

Valeu e_gama, ainda não usei mas creio q vai dar certo. Evandro, este código é só para gerar uma barra para controle interno, não é necessário usar algorítmos para cálculos das barras. É para tirar um produto do almoxarifado e mandar para linha de produção. É tudo interno. Ele pode ser assim:
000000000001
000000000002
000000000003 and so on. Por isso a dúvida de como incrementar 1 em uma string.


GOSTEI 0
POSTAR