Ver Mensaje Individual
  #7  
Antiguo 17-01-2011
Avatar de yapt
yapt yapt is offline
Miembro
 
Registrado: sep 2006
Ubicación: España
Posts: 258
Reputación: 20
yapt Va por buen camino
Cita:
Empezado por coso Ver Mensaje
Cierto, pense lo de mover los valores unicamente como si fuese un array simple. Gracias por la correcion.

Entonces deberia ser algo asi no?



Código Delphi [-]
FColumnas[index].FreeAndNil;
 
for X := index to length(FColumnas) - 2 do
FColumnas[x] := FColumnas[x+1];
 
setlength(FColumnas,Length(FColumnas)-1);



esto es, sin tener que recrear todo el array dentro del bucle, sino unicamente moviendo los ya existentes. Creo que ahora si es correcto...
Si.... así debería ser lo mismo. Y sin hacer un create, cada vez, a cada "columna" (elemento del array).

Debería ser mucho más eficiente. Pero no explica el problema (todavía)...

Cita:
Empezado por coso Ver Mensaje
PD: remirando tu codigo y habiendo leido lo que dices del create de TDictionary, creo que el error lo tienes en la linea del mismo. No se bien bien como va, pero me extraña que esta expresion (Columna[x].Create( Columna[x+1] )) funcione. No estas asignando nada a nada, solo llamando al create 'al aire', digamos, sin que se recoja su resultado (de todas maneras le echare un vistazo a la clase TDictionary). Si pruebas Columna[x] := TColumna.Create(Columna[x+1]) te falla tambien? Saludos.
Columna, realmente, apunta al array. Si te fijas es una propiedad de la clase, que lo que devuelve es un elemento (al que apunta el índice), que es un elemento del array FColumnas.

Código Delphi [-]
 //Y el array de 
  FColumnas //, es un Array de objetos 
     TColumnaDic //, que a su vez, es un objeto 
         TDictionary //que, finalmente, es una colección (lista) de valores.
Es decir, poniendo un ejemplo en "pseudocódigo":
Código Delphi [-]
Columna[x] = Lista de elementos que contienen string, boolean)>

Por tanto:
Código Delphi [-]
Columna[x].Create( Columna[x+1] )

Lo que hace es llamar al método create de TDictionary, pasandole como parámetro otro TDictionary que ya existe, con lo que el objeto se crea y los valores, se copian.

Como digo, ya no es importante, pues está funcionando (con un TList) y veo que se está complicando en exceso.

Me gustaría saber por qué sucedía el problema y seguiré respondiendo cualquier pregunta al respecto. Pero no hay prisa.

:-)

Gracias coso.
Responder Con Cita