Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > OOP
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Coloboración Paypal con ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 03-08-2007
Avatar de Delphius
[Delphius] Delphius is offline
Miembro Premium
 
Registrado: jul 2004
Ubicación: Salta, Argentina
Posts: 5.582
Poder: 27
Delphius Va camino a la fama
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;
__________________
Delphius
[Guia de estilo][Buscar]

Última edición por Delphius fecha: 03-08-2007 a las 20:39:00.
Responder Con Cita
  #2  
Antiguo 03-08-2007
Avatar de MaMu
MaMu MaMu is offline
Miembro
 
Registrado: abr 2006
Ubicación: Argentina
Posts: 863
Poder: 21
MaMu Va por buen camino
Lo que se me ocurrio es hacer lo siguiente:

Código Delphi [-]
 Pagina:=20;
  for i:=1 to List.Count do
    begin
      w:=w+1;  //acumulador
      if w=Pagina     //Conto 20?
        then begin
          w:=0;
          ListBox1.Items.Add('Pagina de '+IntToStr(i-Pagina)+' a '+IntToStr(i));
        end;
    end;

Y si por ejemplo el List.Count=100 me funciona, pero no se me ocurre, como hacer cuando List.Count=105, tengo que resolver eso.

Lo de los grupos lo habia pensado, pero tengo tan ordenado el tema de la lista que me da miedo cambiar el codigo.

Saludos
__________________
Código Delphi [-]
 
try 
ProgramarMicro(80C52,'Intel',MnHex,True);
except
On Exception do
MicroChip.IsPresent(True);
end;
Responder Con Cita
  #3  
Antiguo 03-08-2007
Avatar de Delphius
[Delphius] Delphius is offline
Miembro Premium
 
Registrado: jul 2004
Ubicación: Salta, Argentina
Posts: 5.582
Poder: 27
Delphius Va camino a la fama
Mamu, hace tiempo tuve que manejar algo parecido a lo que tu buscas. Tenía que implementar el test Chi-Cuadrado que lo que hace es armar grupos (series) de elementos de una lista de números y con ellos calcula unos estadísticos.

Al algoritmo lo implementé con arrays dinámicos. Y me olvidaba de la creación de TList. Si estas interesado, te lo puedo enviar para que lo estudies. Yo lo que hice fue aplicar el artilugio que te comentaba anteriormente.

Saludos,
__________________
Delphius
[Guia de estilo][Buscar]
Responder Con Cita
  #4  
Antiguo 03-08-2007
Avatar de eduarcol
[eduarcol] eduarcol is offline
Miembro Premium
 
Registrado: ago 2003
Ubicación: En los estados Zulia y Merida de Venezuela
Posts: 4.151
Poder: 27
eduarcol Va por buen camino
Cita:
Empezado por mamu Ver Mensaje
Y si por ejemplo el List.Count=100 me funciona, pero no se me ocurre, como hacer cuando List.Count=105, tengo que resolver eso.
Prueba esta modificacion a ver si va, pero la verdad no entiendo exactamente cual es el problemas, si entiendo lo que quieres hacer mas no el problema que describes al comienzo

Código Delphi [-]
 Pagina:=20;
  for i:=1 to List.Count do
    begin
      w:=w+1;  //acumulador
      if w=Pagina     //Conto 20?
        then begin
          w:=0;
          ListBox1.Items.Add('Pagina de '+IntToStr(i-Pagina)+' a '+IntToStr(i));
        end;
    end;
   //Si sale valida que no tenga nada w, es decir imprimio todos los valores
   if w<>0 then
      ListBox1.Items.Add('Pagina de '+IntToStr(i-w)+' a '+IntToStr(i));    //Muestra los que falta
__________________
...Yo naci en esta ribera del arauca vibr@d0r
Soy hermano de la espuma,
de la garza, de la rosa y del sol...
Viva Venezuela
Responder Con Cita
  #5  
Antiguo 03-08-2007
Avatar de MaMu
MaMu MaMu is offline
Miembro
 
Registrado: abr 2006
Ubicación: Argentina
Posts: 863
Poder: 21
MaMu Va por buen camino
SOLUCIONADO

Implemente esto como prueba y funciona perfecto, tal cual lo necesitaba.
Luego lo voy a adaptar a una funcion.

Código Delphi [-]
procedure TForm1.Button1Click(Sender: TObject);
var i,w,z,cant,porcion:integer;
begin
  w:=0;
  z:=20;
  porcion:=0;
  cant:=StrToInt(Edit1.Text);
  for i:=1 to cant  do
    begin
      w:=w+1;
      if w=z  //Conto 20?
        then begin
            w:=0;
            ListBox1.Items.Add('Pagina de '+IntToStr(i-z+1)+' a '+IntToStr(i));
            porcion:=porcion+1;
          end;
    end;
  //Faltan??? menores a Z=20
  if w<>0
  then ListBox1.Items.Add('Pagina de '+IntToStr(i-w)+' a '+IntToStr(cant));
end;

Delphius es interesante el dato, y desde ya cuando quieras compartirlo, bienvenido sea.

Saludos y Gracias a todos.
__________________
Código Delphi [-]
 
try 
ProgramarMicro(80C52,'Intel',MnHex,True);
except
On Exception do
MicroChip.IsPresent(True);
end;
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Fragmentar Imagenes... DarkDrakon Gráficos 1 01-03-2007 09:50:19
sql resultado carols018 MySQL 2 23-11-2006 16:48:17
Como paginar una tabla de 2000 renglones GCASTILLO Internet 0 03-10-2006 01:42:51
Resultado extraño... vantta C++ Builder 5 01-02-2005 11:45:33
Paginar registros JulioGO PHP 4 25-10-2004 01:50:32


La franja horaria es GMT +2. Ahora son las 02:09:58.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi