Ver Mensaje Individual
  #2  
Antiguo 10-03-2012
Avatar de duilioisola
[duilioisola] duilioisola is offline
Miembro Premium
 
Registrado: ago 2007
Ubicación: Barcelona, España
Posts: 1.806
Reputación: 22
duilioisola Es un diamante en brutoduilioisola Es un diamante en brutoduilioisola Es un diamante en bruto
Esta instruccion
Código Delphi [-]
   for i:=0 to N-1 do begin
     VInstanciasAux[i]:=TInstancia.Create;
     VInstanciasAux[i]:=Self.VInstancias[i].Clon;
   end;
se puede traducir como:
Código Delphi [-]
   for i:=0 to N-1 do begin
     VInstanciasAux[i]:=TInstancia.Create;
     // VInstanciasAux[i]:=Self.VInstancias[i].Clon;
        VInstanciasAux[i]:=TInstancia.Create;
        VInstanciasAux[i]:=Copy(Self.VClasificacion);
        VInstanciasAux[i]:=Copy(Self.VDistancias);
        VInstanciasAux[i]:=Copy(Self.MatrizCG);
        VInstanciasAux[i]:=Self.Inercia;
        VInstanciasAux[i]:=Copy(Self.VectorCardi);
   end;
Como ves, estas creando y volviendo a crear la misma variable.
La primera vez que lo creas VInstaciaAux[i] apunta a un lugar de memoria, que cuando no lo necesites mas deberás liberar.
Cuando le asignas la segunda creación, apuntará a otro lugar de la memoria y te habrá quedado una instancia en el limbo.

Esto es el error que veo, pero podría haber otros, dependiendo de como trates a las instancias generadas cuando modificas el tamaño del array VInstanciasAux.
Responder Con Cita