PDA

Ver la Versión Completa : numero encriptado o en clave


escorpionrojo43
05-06-2010, 15:26:16
Hola Amigos del Club
mi codigo es el siguiente:

procedure DBText33OnPrint;
begin
case floattostr (DBPipeline1['DTI_PRECIO']) of
1 : Label29.caption := 'T';
2 : Label29.caption := 'E';
3 : Label29.caption := 'R';
4 : Label29.caption := 'M';
5 : Label29.caption := 'I';
6 : Label29.caption := 'N';
7 : Label29.caption := 'A';
8 : Label29.caption := 'D';
9 : Label29.caption := 'O';
0 : Label29.caption := 'S';
else Label29.caption := '.';
end;

end;


mi problema es que DTI_PRECIO es un valor double como lo indica su nombre aqui se guarda el precio de un producto, el cual deseo encriptarlo a la hora de imprimir necesito que cada numero aquiera su valor especificado mas arriba. si DTI_PRECIO = 100.00 que a la hora de imprimir se muestre TSS.SS. espero que alguien me pueda ayudar. gracias

Casimiro Notevi
05-06-2010, 19:03:25
Te pongo un ejemplo para que lo adaptes, pero te servirá de referencia:

He creado un proyecto nuevo y en el formulario he añadido un par de etiquetas, un par de edits y un botón:

bt1: TButton;
ed1: TEdit;
ed2: TEdit;
lb1: TLabel;
lb2: TLabel;

Y este es el código completo del programita:



unit Unit25;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;

type
TForm1 = class(TForm)
bt1: TButton;
ed1: TEdit;
ed2: TEdit;
lb1: TLabel;
lb2: TLabel;
procedure bt1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.bt1Click(Sender: TObject);
const
_CLAVE_ = 'TERMINADOS';
// 1234567890
var
cPrecio : string;
fPrecio : double;
iX,
iNum : integer;
cSalida : string;
begin
ed2.Text := '';
cSalida := '';
if ed1.Text='' then
fPrecio := 1234567890
else
fPrecio := StrToFloat(ed1.Text);
cPrecio := FloatToStr(fPrecio);
for iX:=1 to length(cPrecio) do
begin
if pos(cPrecio[iX],'1234567890')>0 then
begin
iNum := StrToInt(cPrecio[iX]);
if iNum=0 then
iNum := 10;
cSalida := cSalida + _CLAVE_[ iNum ];
end
else
cSalida := cSalida + cPrecio[iX];
end;
//
ed2.Text := cSalida;
end;

end.




Es sólo un ejemplo, se puede hacer de otras formas, ahora sólo hace falta que lo adaptes.

Y aquí la pantallita:

http://s3.subirimagenes.com:81/otros/4615700pantallazo.jpg

Caral
05-06-2010, 21:50:08
Hola
Muy bueno, me gusto mucho.
Saludos

escorpionrojo43
06-06-2010, 05:43:28
Te pongo un ejemplo para que lo adaptes, pero te servirá de referencia:

He creado un proyecto nuevo y en el formulario he añadido un par de etiquetas, un par de edits y un botón:

bt1: TButton;
ed1: TEdit;
ed2: TEdit;
lb1: TLabel;
lb2: TLabel;

Y este es el código completo del programita:


Código Delphi [-] (http://www.clubdelphi.com/foros/#)unit Unit25; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TForm1 = class(TForm) bt1: TButton; ed1: TEdit; ed2: TEdit; lb1: TLabel; lb2: TLabel; procedure bt1Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.bt1Click(Sender: TObject); const _CLAVE_ = 'TERMINADOS'; // 1234567890 var cPrecio : string; fPrecio : double; iX, iNum : integer; cSalida : string; begin ed2.Text := ''; cSalida := ''; if ed1.Text='' then fPrecio := 1234567890 else fPrecio := StrToFloat(ed1.Text); cPrecio := FloatToStr(fPrecio); for iX:=1 to length(cPrecio) do begin if pos(cPrecio[iX],'1234567890')>0 then begin iNum := StrToInt(cPrecio[iX]); if iNum=0 then iNum := 10; cSalida := cSalida + _CLAVE_[ iNum ]; end else cSalida := cSalida + cPrecio[iX]; end; // ed2.Text := cSalida; end; end.



Es sólo un ejemplo, se puede hacer de otras formas, ahora sólo hace falta que lo adaptes.

Y aquí la pantallita:

http://s3.subirimagenes.com:81/otros/4615700pantallazo.jpg


Exelente gracias por tu respuesta, hace lo que necesito. ahora bien existe alguna manera de que no allan caractes dentro de corchetes "[ ]" ,
" cPrecio[iX] "
ya que reportbuilder me da un error de compilacion cuando encuentra estos simbolos? el punto es que quiero que se generen en tiempo de impresion.

Casimiro Notevi
06-06-2010, 10:39:31
Hola
Muy bueno, me gusto mucho.
Saludos

Eso es porque lo has visto con buenos ojos :)



Exelente gracias por tu respuesta, hace lo que necesito. ahora bien existe alguna manera de que no allan caractes dentro de corchetes "[ ]" ,
" cPrecio[iX] "
ya que reportbuilder me da un error de compilacion cuando encuentra estos simbolos? el punto es que quiero que se generen en tiempo de impresion.

No entiendo nada de lo que dices :confused:

escorpionrojo43
06-06-2010, 16:14:34
Eso es porque lo has visto con buenos ojos :)





No entiendo nada de lo que dices :confused:


me refiero a que si es una aplicacion el codigo funciona sin problemas en delphi.
el inconveniente que tengo es que ese procedimiento lo tengo que poner en reporbuilder para que salga impreso en mis etiquetas o reportes.
osea no me interesa mostrarlo por pantalla si no mas bien que salga en mi reporte, pero cuando intento poner el codigo en reportbuilder me da un error ya que no me deja compilar nada que tenga el simbolo " [ " o " ] " no se a que se debe.

Casimiro Notevi
06-06-2010, 20:37:17
Evidentemente, el lenguaje que usa reportbuilder no es delphi, aunque se le parezca algo.
Quizás puedas hacerlo desde delphi y pasar el resultado como parámetro a reportbuilder.
También puedes meter los datos en un dataset ya con ese dato encriptado como un campo más y usarlo desde reportbuilder. En fin, tienes varias posibilidades.
Incluso desde reportbuilder supongo que habrá alguna forma de hacerlo directamente.