Converter valor Currency para String

Delphi

11/04/2004

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


Jose Luiz

Jose Luiz

Curtidas 0

Respostas

E-eduardo

E-eduardo

11/04/2004

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?!


GOSTEI 0
Aroldo Zanela

Aroldo Zanela

11/04/2004

Colega,

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;



GOSTEI 0
POSTAR