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...
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.