Alguem sabe se o Delphi tem algo assim?
Ou tenho que fazer testes ate chegar no utimo item 200(DM).
Eu tenho um campo que conta a quantidade de itens em um pedido, que pode ir ate 200 itens mas o campo eh caracter de 2 posicoes, Se a qtd de itens for > que 99 numera os itens com letras
ex:
1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12,......99, A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, AA, AB, AC, AD, AE,......, BA, BB, BC, BD, BE,......CA, CB, CC, CD, CE,......)
Eu tenho um campo que conta a quantidade de itens em um pedido, que pode ir ate 200 itens mas o campo eh caracter de 2 posicoes, Se a qtd de itens for > que 99 numera os itens com letras
ex:
1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12,......99, A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, AA, AB, AC, AD, AE,......, BA, BB, BC, BD, BE,......CA, CB, CC, CD, CE,......)
Claudio_f
Curtidas 0
Respostas
Castilho
26/08/2003
Eu fiz um lance desse uma vez, vc precisa criar uma tabela com tds as letras do alfabetos, e colocar sua função para buscar as letras em forma de comparação de números e letras.
GOSTEI 0
Eniorm
26/08/2003
Ou tenho que fazer testes ate chegar no utimo item 200(DM).
Eu tenho um campo que conta a quantidade de itens em um pedido, que pode ir ate 200 itens mas o campo eh caracter de 2 posicoes, Se a qtd de itens for > que 99 numera os itens com letras
ex:
1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12,......99, A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, AA, AB, AC, AD, AE,......, BA, BB, BC, BD, BE,......CA, CB, CC, CD, CE,......)
tá querendo criar um gerador de senha é ?!?!?!
GOSTEI 0
Allen74
26/08/2003
Cláudio,
Quais são as letras permitidas no código? Vão de A até Z, mas estão incluídos os caracteres da língua inglesa (K,W,Y)?
A sequência começando com A, vai de A0, A1 até AZ para depois começar com B0 até BZ?
Pelas minhas contas, o item de número 200 seria representado pelo código CS ao invés de DM, se o alfabeto definido para a representação fosse:
[b:5d5a6384f3]0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ[/b:5d5a6384f3]
Por isso imaginei que algumas letras podem não estar contidas no código ou então a sequência não vai até a última letra do alfabeto.
Quais são as letras permitidas no código? Vão de A até Z, mas estão incluídos os caracteres da língua inglesa (K,W,Y)?
A sequência começando com A, vai de A0, A1 até AZ para depois começar com B0 até BZ?
Pelas minhas contas, o item de número 200 seria representado pelo código CS ao invés de DM, se o alfabeto definido para a representação fosse:
[b:5d5a6384f3]0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ[/b:5d5a6384f3]
Por isso imaginei que algumas letras podem não estar contidas no código ou então a sequência não vai até a última letra do alfabeto.
GOSTEI 0
Okama
26/08/2003
Me desculpe o óbvio, mas não seria melhor contar com inteiro, ou aumentar uma casa?
GOSTEI 0
Claudio_f
26/08/2003
Ola Allen,
Eh isso mesmo, eu pretendo incluir todas as letras, inclusive (K,W,Y), A sequencia comecaria (depois do item 99) com A0, A1 ate AZ, e depois comecaria novamente com a letra B0 ate BZ.
O alfabeto seria mesmo: 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ.
Eu tinha pensado em fazer como o Castilho sugeriu criar uma tabela com todas as letras do alfabeto, mas penso que a gravacao de um pedido grande se tornaria muito lenta, mas se nao tiver outra maneira vou ter de fazer assim mesmo.
O banco que eu uso eh Oracle, e o sistema atual faz isso mas eh desenvolvido em um dialeto de Clipper usado pela Microsiga, e eu nao tenho acesso aos fontes para saber como ele faz.
---
Oi Okama, estou desenvolvendo um modulo a parte do sistema que usamos na empresa, mas usando a mesma base de dados, por isso nao posso alterar o tamanho e as caracteristicas dos campos.
Eh isso mesmo, eu pretendo incluir todas as letras, inclusive (K,W,Y), A sequencia comecaria (depois do item 99) com A0, A1 ate AZ, e depois comecaria novamente com a letra B0 ate BZ.
O alfabeto seria mesmo: 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ.
Eu tinha pensado em fazer como o Castilho sugeriu criar uma tabela com todas as letras do alfabeto, mas penso que a gravacao de um pedido grande se tornaria muito lenta, mas se nao tiver outra maneira vou ter de fazer assim mesmo.
O banco que eu uso eh Oracle, e o sistema atual faz isso mas eh desenvolvido em um dialeto de Clipper usado pela Microsiga, e eu nao tenho acesso aos fontes para saber como ele faz.
---
Oi Okama, estou desenvolvendo um modulo a parte do sistema que usamos na empresa, mas usando a mesma base de dados, por isso nao posso alterar o tamanho e as caracteristicas dos campos.
GOSTEI 0
Nildo
26/08/2003
Criar uma tabela seria loucura.
Acho que agora seria uma hora perfeita para se auto-desafiar com esta lógica de programação.
Uma dica: Ord(´A´) = 65
Acho que agora seria uma hora perfeita para se auto-desafiar com esta lógica de programação.
Uma dica: Ord(´A´) = 65
GOSTEI 0
Allen74
26/08/2003
Cláudio,
Neste caso, você pode utilizar estas duas funções que criei:
A primeira irá codificar seu inteiro para uma string de dois caracteres, de acordo com as regras já estabelecidas e com o alfabeto informado. A segunda faz o caminho inverso.
O limite de representação será 1035, que corresponde a ZZ
Neste caso, você pode utilizar estas duas funções que criei:
function Codifica (num : integer) : string; const Alfabeto = ´0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ´; var D0,D1,Dif : integer; begin Result := ´´; Dif := 10 * Length(Alfabeto) - 100; if (num >= 0) and (num <= 99) then Result := IntToStr(num) else begin num := num + Dif; D0 := num mod Length(Alfabeto) + 1; D1 := num div Length(Alfabeto) + 1; Result := Alfabeto[D1]+Alfabeto[D0]; end; end; function Decodifica (cod : string) : integer; const Alfabeto = ´0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ´; var D0,D1,Dif : integer; begin Result := -1; Dif := 10 * Length(Alfabeto) - 100; If Length(Cod) in [1..2] then begin If Length(cod) = 1 then Cod := ´0´+Cod; D0 := Pos(Cod[2], Alfabeto) - 1; D1 := Pos(Cod[1], Alfabeto) - 1; If (D0 < 10) and (D1 < 10) then Result := D1 * 10 + D0 else Result := (D1 * Length(Alfabeto) + D0) - Dif; end; end;
A primeira irá codificar seu inteiro para uma string de dois caracteres, de acordo com as regras já estabelecidas e com o alfabeto informado. A segunda faz o caminho inverso.
O limite de representação será 1035, que corresponde a ZZ
GOSTEI 0
Claudio_f
26/08/2003
Blz pessoal,
Allen vou testar as tuas funcoes, valeu pela forca.
:D
Allen vou testar as tuas funcoes, valeu pela forca.
:D
GOSTEI 0