Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Coloboración Paypal con ClubDelphi

 
 
Herramientas Buscar en Tema Desplegado
  #3  
Antiguo 17-12-2013
TecnoBestia TecnoBestia is offline
Miembro
 
Registrado: jun 2010
Posts: 35
Poder: 0
TecnoBestia Va por buen camino
Hola, entiendo que self es una referencia a un objeto, pero no entiendo por que no puede cambiarse, en otros lugares he usado la instrucción

Código:
  VecinoParticula:=VecinoAux9.Clon;
y también
Código:
VecinoAux9:=Self.Clon;
y no he tenido ningún problema siendo VecinoParticula y VecinoAux9 instancias de la misma clases, la función Clon lo que hace es crear una compia del objeto para que no sea una referencia.

El procedimiento correspondiente es:

Código:
function clsParticula.Clon():clsParticula;
var
i:Integer;                             {Esta función realiza un clon independiete, elimina el uso de punteros en las instancias}
begin
  Result:=clsParticula.Create;
  Result.VClasificacion:=Copy(Self.VClasificacion);
  Result.VCoordenadasActual:=Copy(Self.VCoordenadasActual);
  Result.VCoordenasPosicionAnterior:=Copy(Self.VCoordenasPosicionAnterior);
  Result.VCoordenadasMejorPosicion:=Copy(Self.VCoordenadasMejorPosicion);
  Result.VDistancias:=Copy(Self.VDistancias);
  Result.ValorDeLaInerciaActual:=Self.ValorDeLaInerciaActual;
  Result.ValorInerciaEnMejorPosicion:=Self.ValorInerciaEnMejorPosicion;
  Result.VCardinalidades:=Copy(Self.VCardinalidades);
  Result.VVelocidad:=Copy(Self.VVelocidad);
  //Tabu
  Result.OperaRealizadaVecino:=Self.OperaRealizadaVecino;
  Result.PosicionModificadaParaVecino:=Self.PosicionModificadaParaVecino;
  Result.PosicionAActualizarEnLT:=Self.PosicionAActualizarEnLT;

  SetLength(Result.ListaTabu,2,TamaMaxListaTabu);

  Result.ListaTabu[0]:=Copy(Self.ListaTabu[0]);
  Result.ListaTabu[1]:=Copy(Self.ListaTabu[1]);

  Result.TamaActualLT:=Self.TamaActualLT;
  Result.SeGeneroElVecino:=Self.SeGeneroElVecino;
end;
Donde result posee una copia del objeto independiente de la instancia general. Mi duda es ¿por qué no puedo cambiar el self pero si otras referencias de los objetos?, y más aún ¿cómo puedo solucionar el problema?

Saludos...
Responder Con Cita
 


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

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
??Como modificar una variable externa en un procedimiento?? jasmad Lazarus, FreePascal, Kylix, etc. 6 01-12-2011 23:40:38
condicionar un procedimiento dentro de otro procedimiento yossi Varios 7 17-05-2010 10:47:14
Abrir fichero asociado si la aplicacion ya esta activa. Geta Varios 4 13-03-2009 01:43:51
Como hacer un commit dentro de un procedimiento almacenado altp Firebird e Interbase 6 03-11-2005 18:21:32
Como modificar valores desde un dbgrid q esta asociado a un QUERY? fmonte SQL 12 26-08-2004 22:25:22


La franja horaria es GMT +2. Ahora son las 03:13:22.


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