Al igual que jhonny... me estaba preguntando... ¿cual es el objetivo de agrupar los elementos?
Yo estaba pensando en mantener el grupo en el mismo List. El truco consistiría en ordenarlos por grupo:
elem1g1
elem2g1
...
elemNg1 - fin grupo 1
elem1g2
elem2g2
...
elemNg2 - fin grupo 2
De modo que lo que hay que recordar es la cantidad de grupos. Y no estar almacenando cada grupo por separado. La idea es para recorrer cada grupo se haga algo como (si quisieramos buscar los elementos del primer grupo. Siendo K la cantidad de grupos):
Código:
for i := 1 to ((List.Count -1) div K) do
begin
... lo que haya que hacer...
end;
Ahora, si necesariamente debes mantener a cada grupo separado. Creo que la solución puede pasar por hacer cosas como esta:
Código:
....
TGroup = class(TList);
...
TListGroup = class
private
FGroups: TList;
FGroupsCount: integer;
...
public
AddToGroup(Group: integer; Elemento: string);
...
end;