Ver Mensaje Individual
  #3  
Antiguo 29-11-2011
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 19.439
Reputación: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Cita:
Empezado por jonydread Ver Mensaje
hola busque por el foro pero sin embargo no logro comprender al 100%
como evitar añadir archivos dos veces
Yo en estos caso utilizo una estructura auxiliar que hace el trabajo (TStringList); Además de codificar menos, esta estructura debe estar ordenada (a veces el componente no debe estarlo), por lo tanto la búsqueda de los elementos se realiza utilizando "búsqueda dicotómica" en lugar de secuencial.

Utilizaría (y suelo utilizar) algo así:

Código Delphi [-]
  TS := TStringList.Create;
  TS.Sorted := True;
  TS.Duplicates := dupIgnore;

  try
    if OpenDialog1.Execute then
      for i:= 0 to Opendialog1.Files.Count-1 do
        TS.Add(opendialog1.Files[i]);

    // Asignar
    ListBox1.Items.AddStrings(TS);
  finally
    FreeAndNil(TS);
  end;

NOTA1: Si estamos hablando de 10 elementos, el rendimiento (no lo he medido) seguro que es desechable. En números elevados la ganancia va siendo exponencial.
NOTA2: Si el ListBox ya está ordenado es posible (no lo aseguro 100% -basta con mirar el código de la VCL-) que ya se utilice esta búsqueda, por lo que tal vez no haría falta.
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita