Ver Mensaje Individual
  #1  
Antiguo 01-03-2009
Bauhaus1975 Bauhaus1975 is offline
Miembro
 
Registrado: may 2005
Ubicación: Málaga
Posts: 135
Reputación: 20
Bauhaus1975 Va por buen camino
Unhappy Array de TList. ¿Cómo mantener datos?

Hola de nuevo compañeros.
Tengo un problema para mantener los datos en un 'array of TList'. Veamos los tipos y variables para empezar:

Código Delphi [-]
type
    TLista  = TList;
    TTabla = array of TLista;
 
    PItem = ^TItem;
    TItem = Record
               campo1:double;
               campo2:double;
     end;
 
var
    lista : TLista;
    tabla : TTabla;

El problema se da a la hora de añadir datos, primero formamos la lista añadiendo items a ella. Y el bucle principal mete cada lista en tabla[i]. Si reseteamos la lista previamente a introducir sus items, los valores antes introducidos en la tabla se pierden.

Código Delphi [-]
// Ponemos un ejemplo para introducir los datos
var
    item : PItem;
begin
 
SetLength(tabla,0);
lista:=TList.Create();
// La tabla tiene n listas
for iLista:=1 to NLista do
    // Reseteamos la lista
    lista.Clear(); // *** Al ejecutar este sentencia perdemos todos lasl istas antes introducidas 
    // NOTA: según he visto, esto no libera la memoria consumida por los items, pero omitimos el paso de liberar.
    // Cada lista tiene nItems, los añadimos
    for iItem:=1 to NItem do
        begin
        NEW(item); 
        //item.campo1:= (cualquier valor)
        lista.Add(item);
    end;
    // Añadimos la lista a la tabla
   SetLength(tabla,Length(tabla)+1);
   tabla[Length(tabla)-1] := lista;
end;
// Cada vez que se ejecuta el 'lista.Clear();' se pierde lo antes almacenado en tabla[].

¿Cuál puede ser la solución? ¿tengo que crear una clase que contenga al tipo TList, para hacer un NEW(lista) en cada iteración?

Gracias y un saludo.

Última edición por Bauhaus1975 fecha: 01-03-2009 a las 12:14:09.
Responder Con Cita