Fórum Converter valor Currency para String #225264
11/04/2004
0
Colegas..
Tenho num cadastro de produto um campo Precocusto que e do tipo Currency. Preciso mostrar no relatorio de vendas dos produtos um campo que mostrarar o Precocusto codificado que só o vendedor sabera traduzir.
exemplo um produto cujo preço de custo é: R$1000,50 ficaria ABCDHF
cada letra corresponde a um numero, acho que com um array consigo
mas não sei como fazer.alguem teria algo paracecido?
Grato..
Tenho num cadastro de produto um campo Precocusto que e do tipo Currency. Preciso mostrar no relatorio de vendas dos produtos um campo que mostrarar o Precocusto codificado que só o vendedor sabera traduzir.
exemplo um produto cujo preço de custo é: R$1000,50 ficaria ABCDHF
cada letra corresponde a um numero, acho que com um array consigo
mas não sei como fazer.alguem teria algo paracecido?
Grato..
Jose Luiz
Curtir tópico
+ 0
Responder
Posts
11/04/2004
E-eduardo
A solução mais simples para seu problema é determinar uma letra que corresponda a cada número:
0 = F
1 = G
2 = H
3 = I
...
9 = O
Então faça uma função que passando um valor ela retorne a string com a codificação.
function Converte(const Valor : Currency) : string;
// Defina um array constante com a correspondência, elemento 0 = F,
// elemento 1 = G, elemento 2 = H... e assim por diante
const Letras : array[0..9] of Char = (´F´, ´G´, ´H´, ...complete aqui...´O´);
var s : string;
i : Integer;
begin
s := FloatToStr(Valor);
Result := ´´;
for i := 1 to Length(s) do
begin
if s[i] in [´0´..´9´] then
Result := Result + Letras[StrToInt(s[i])]
else
Result := Result + s[i];
end;
end;
....
Crie um campo calculado na sua tabela e no código do evento OnCalcFields insira o código abaixo:
SuaTabela.FieldByName(´CampoCalculadoCriadoPorVoce´).AsString :=
Converte(SuaTabela.FieldByName(´PrecoCusto´).AsCurrency);
Agora testa isso aí que eu fiz no olho sem testar, Valeu?!
0 = F
1 = G
2 = H
3 = I
...
9 = O
Então faça uma função que passando um valor ela retorne a string com a codificação.
function Converte(const Valor : Currency) : string;
// Defina um array constante com a correspondência, elemento 0 = F,
// elemento 1 = G, elemento 2 = H... e assim por diante
const Letras : array[0..9] of Char = (´F´, ´G´, ´H´, ...complete aqui...´O´);
var s : string;
i : Integer;
begin
s := FloatToStr(Valor);
Result := ´´;
for i := 1 to Length(s) do
begin
if s[i] in [´0´..´9´] then
Result := Result + Letras[StrToInt(s[i])]
else
Result := Result + s[i];
end;
end;
....
Crie um campo calculado na sua tabela e no código do evento OnCalcFields insira o código abaixo:
SuaTabela.FieldByName(´CampoCalculadoCriadoPorVoce´).AsString :=
Converte(SuaTabela.FieldByName(´PrecoCusto´).AsCurrency);
Agora testa isso aí que eu fiz no olho sem testar, Valeu?!
Responder
Gostei + 0
11/04/2004
Aroldo Zanela
Colega,
Uma solução:
Testando:
Uma solução:
Function CodificaValor(Valor: Currency): String; Const aTabela: Array[´0´..´9´] of Char = (´A´, ´B´,´C´,´D´,´E´,´F´,´G´,´H´,´I´,´J´); var cValor: String; nI, nX: Byte; begin Result := ´´; cValor := IntToStr(Trunc(Valor*100)); nX := Length(cValor); For nI := 1 to nX do Result := Result + aTabela[cValor[nI]]; end;
Testando:
procedure TForm1.Button1Click(Sender: TObject); begin ShowMessage(CodificaValor(rxCalcEdit1.Value)); end;
Responder
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)