Ver Mensaje Individual
  #8  
Antiguo 24-08-2007
Avatar de gluglu
[gluglu] gluglu is offline
Miembro Premium
 
Registrado: sep 2004
Ubicación: Málaga - España
Posts: 1.455
Reputación: 21
gluglu Va por buen camino
Gracias Basti.

Funciona correctamente !

... de mi ! En otra parte del programa había hecho algo parecido y no me he percatado de ello para esta problemática que planteo en este hilo.

En cualquier caso, al código le falta un detalle para que funcione correctamente :
Código Delphi [-]
procedure TForm.FormCreate(Sender: TObject);
begin
  ...
  SetLength(RackCard,70);
 
  for I := 0 to 69 do begin
 
    RacKCard[i].ShapeA := TShape.Create(self);
    RackCard[i].ShapeA.Left        :=    ...;
    RackCard[i].ShapeA.Top         :=    ...;
    // sigo definiendo aqui todos los demás atributos de ShapeA
    RackCard[i].ShapeA. Parent := Self;
    ...
    RacKCard[i].ShapeB := TShape.Create(self);
    RackCard[i].ShapeB.Left        :=    ...;
    RackCard[i].ShapeB.Top         :=    ...;
    RacKCard[i].ShapeB.Parent := Self;
    ...
  end;
 
end;

Conclusión : He probado la funcionalidad de mi programa de esta manera, es decir, accediendo después directamente a RackCard[i].ShapeA (por ejemplo), en vez de utilizar el FindComponent en un Form que como ya comenté antes tiene cerca de 1000 elementos.

Cual sorpresa la mía. No hay NINGUNA mejora de rendimiento. Vamos, que lo mismo es acceder al Array directamente que utilizar FindComponent con una lista de 1000 componentes en el form.

En un procedimiento de actualización con datos y tal, ambos procesos tardan exactamente 4.6 segundos medidos en mi ordenador.

Por lo que concluyo que mi idea de utilizar arrays con acceso directo en vez de FindComponent finalmente no mejora el rendimiento. Así que se queda como está !

Gracias a todos por vuestra ayuda.
__________________
Piensa siempre en positivo !
Responder Con Cita