Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   OOP (https://www.clubdelphi.com/foros/forumdisplay.php?f=5)
-   -   numero encriptado o en clave (https://www.clubdelphi.com/foros/showthread.php?t=68285)

escorpionrojo43 05-06-2010 15:26:16

numero encriptado o en clave
 
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 Noteví 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:


Código Delphi [-]
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:


Caral 05-06-2010 21:50:08

Hola
Muy bueno, me gusto mucho.
Saludos

escorpionrojo43 06-06-2010 05:43:28

Cita:

Empezado por Casimiro Notevi (Mensaje 366295)
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 [-]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:



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 Noteví 06-06-2010 10:39:31

Cita:

Empezado por Caral (Mensaje 366305)
Hola
Muy bueno, me gusto mucho.
Saludos

Eso es porque lo has visto con buenos ojos :)



Cita:

Empezado por escorpionrojo43 (Mensaje 366323)
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

Cita:

Empezado por Casimiro Notevi (Mensaje 366325)
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 Noteví 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.


La franja horaria es GMT +2. Ahora son las 20:05:57.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi