Ver Mensaje Individual
  #1  
Antiguo 04-12-2014
Avatar de BDWONG
BDWONG BDWONG is offline
Miembro
NULL
 
Registrado: nov 2013
Posts: 113
Reputación: 11
BDWONG Va por buen camino
El mejor momento para liberar un objeto

Bueno no sabia que poner de titulo, asi que si algún moderador encuentra uno mejor que explique mi pregunta que lo modifique por favor.

Bueno mi pregunta es que yo tengo un programa que tiene un clase(objeto) que contiene metodos para cifrar texto plano ejemplo : xor, rotn,reverse, rc4 etc.

mi pregunta viene a que si que cuando llamo al objeto TCifrado y quiero utilizar sus metodos es necesario que al momento de llamar que cree el objeto y en ese mismo instante despues de utilizarlo libere el objeto o la otra opcion que se me viene a la cabeza es que cree el objeto en el formcreate y libere el objeto al cerrar el form

La verdad es algo sin mucho sentido pero imagínense que tenga 20 métodos diferentes y aveces puedo ocupar uno u otro
espero sus respuestas saludos...

Aqui la clase

Código Delphi [-]
interface
type
TCifrado=class(TObject)
  public
  function C_xor(cadena:string):string;
  function Rotn(cadena:string; N:integer):string;
  function Reverse(cadena:string):String;


end;


implementation



{ TCifrado }

function TCifrado.C_xor(cadena: string): string;
var i:integer;
sfinal:string;
begin
     sfinal:='';
     for i :=1  to length(cadena) do
     begin
        sfinal:=sfinal+chr(ord(cadena[i]) xor length(cadena));
     end;

    SetLength(result, length(cadena));
    result:=sfinal;
end;

function TCifrado.Reverse(cadena: string): String;
var
sfinal:String;
i:integer;
begin
   sfinal:='';
   for  i:=length(cadena) downto 1  do
   begin
     sfinal:=sfinal+cadena[i];
   end;

   SetLength(result, length(cadena));
   result:=sfinal;
end;

function TCifrado.Rotn(cadena: string; N: integer): string;
var
i:integer;
sfinal:string;
begin

   for i :=1  to length(cadena) do
   begin
     sfinal:=sfinal+chr((ord(cadena[i])+N) mod 255 );
   end;

   SetLength(result, length(cadena));
   result:=sfinal;
end;

end.

esta es la primera forma como explico
Código Delphi [-]
procedure TForm1.Button2Click(Sender: TObject);
begin
   Cifrado:=TCifrado.Create;
  try
    if RadioButton1.Checked then
      Memo2.Text:=Cifrado.Reverse(Memo1.Text)
   else if RadioButton2.Checked then
      Memo2.Text:=Cifrado.C_xor(Memo1.Text)
   else if RadioButton3.Checked then
      Memo2.Text:=Cifrado.Rotn(Memo1.Text,13);

  finally
   FreeAndNil(Cifrado);
  end;

end;

esta es la segunda
Código Delphi [-]
procedure TForm1.Button2Click(Sender: TObject);
begin
   if RadioButton1.Checked then
      Memo2.Text:=Cifrado.Reverse(Memo1.Text)
   else if RadioButton2.Checked then
      Memo2.Text:=Cifrado.C_xor(Memo1.Text)
   else if RadioButton3.Checked then
      Memo2.Text:=Cifrado.Rotn(Memo1.Text,13);
end;

procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
   Cifrado.Free;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
   Cifrado:=TCifrado.Create;
end;
Responder Con Cita