Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > OOP
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Coloboración Paypal con ClubDelphi

 
 
Herramientas Buscar en Tema Desplegado
  #7  
Antiguo 08-04-2010
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 31
Lepe Va por buen camino
Ñuño, recuerda tambien:
Código Delphi [-]
var a, b:TStringList;
begin
  a := TStringlist.create;
  a.add('uno'); 
  a.add('dos');
  b:= TStringlist.create;
  b.Assign(a);

Para clonar objetos está el método Assign, pero pertenece a TPersistent y puede que incluya muchas cosas que no quieras. Además debes modificar el método Assign en tu clase para que sea 100 % operativo, total, como he soltado un rollo ahí vá lo que deberías hacer:
Código Delphi [-]
procedure TSecuencia.Assign(Avalue:TSecuencia);
begin
 Numero := Avalue.Numero
    Nombre  := Avalue..Nombre;
    Descripcion := Avalue.Descripcion;
   // o sea copiar a la instancia actual, la que se pasa por parámetro.
  // realmente no clona objetos, solo copia los valores de uno a otro

  Recorr.Origen := Avalue.Recorr.Origen
  SetLength(Recorr.tradmov, Avalue.Recorr.Count);
  for i:= 0 to Avalue.Recorr.Count -1 do // Count no debería ser privada 
     Recorr.tradmov[i] := Avalue.Recorr.tradmov[i]; 
  // hace años que no uso "records", delphi los copiaba ¿verdad?
  // sino un simple test y salimos de dudas.
Y ahora si podemos usar un código como...

Código Delphi [-]
var a, b: TSecuencia;
begin
  a := TSecuencia.create;
  b := TSecuencia.Create;
  a.Nombre := 'pepe';
  // relleanar todos los valores
  b.Assign(a);
  "b" será un clon de "a"

//queda por liberar y eso...

Esto que has visto es realmente lo que hace el método TPersistent.Assign(), pero es más lioso de entender por la herencia (la primera vez que vi el código de Assign no entendí nada de nada).

Edito:
como me quedé intrigado hice la prueba, Delphi si clona los registros con el operador ":="
Código Delphi [-]
type  tu = record
   nombre :string;
   end  ;

var   a,b:tu;
procedure TForm1.FormCreate(Sender: TObject);
begin
  a.nombre := 'pepe';
  b:= a;
  a.nombre := 'juan';
  ShowMessage('a.nombre es ' a.nombre + ' b.nombre es '+ b.nombre)
end;
obtenemos el mensaje "a.nombre es juan b.nombre es pepe"
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.

Última edición por Lepe fecha: 08-04-2010 a las 19:20:16.
Responder Con Cita
 



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Crear Clases propias o Usar Existentes jorllazo Debates 19 27-04-2007 03:07:39
Crear y utilizar librerías de clases Val OOP 2 13-04-2007 17:27:11
Crear clases desde Delphi albertoP OOP 6 19-09-2006 21:47:05
crear clases en delphi alextmb Varios 6 24-04-2006 01:40:45
Como usar correctamente ReplaceDialog? clanmilano Varios 1 06-02-2006 13:41:57


La franja horaria es GMT +2. Ahora son las 06:59:41.


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
Copyright 1996-2007 Club Delphi