Cita:
Empezado por jonydread
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]);
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.