Tema: cosas raras
Ver Mensaje Individual
  #1  
Antiguo 21-03-2005
Avatar de ixMike
ixMike ixMike is offline
Miembro
 
Registrado: feb 2004
Posts: 1.151
Reputación: 22
ixMike Va por buen camino
cosas raras

Hola, forofos


Tengo un problemilla un tanto extraño:

En un programa necesito añadir en una lista (TListBox) los nombres de varios archivos. Uso un codigo para evitar que en la lista se añadan dos archivos con el mismo nombre, aunque esten en distintos directorios. Sencillamente uso ExtractFileName en todos los elementos de la lista y los de los archivos que he abierto con un TOpenDialog. El codigo es el siguiente:

Código Delphi [-]
 procedure TFComprimidos.BAnadirFicheroClick(Sender: TObject);
 var
 n, i, c: integer;
 lista: tstrings;
 begin
 if opend.execute and fileexists(OpenD.FileName)then
   begin
   lista:=tstringlist.create;
   lista:=openD.files;
   if LFicheros.Items.Count=0 then
     begin
     LFicheros.Items:=openD.Files;
     exit;
     end;
   n:=lficheros.items.count-1;
   i:=lista.Count-1;
    repeat
     repeat
     if UpperCase(ExtractFileName(LFicheros.Items[n]))=uppercase(ExtractfileName(lista[i]))then lista.Delete(i);
     i:=i-1;
     until i=-1;
     n:=n-1;
    until n=-1;
    if lista.Count>0 then
     for c:=0 to lista.count-1 do
      LFicheros.Items.Add(lista[c]);
    lista.free;
   end;
 end;

El problema es que cuando el la lista (LFicheros) ya hay algo metido, al volver a darle al boton me sale esta excepcion

"List index out of bounds (-1)"

Mi duda es por qué se produce este error, ya que ese "-1" se da en la variable "n" justo después de inicializarla con el valor "LFicheros.Items.Count-1"
Alguien puede ayudarme???

Gracias desde YA

Salu2 a todo el club

Última edición por Neftali [Germán.Estévez] fecha: 22-03-2005 a las 08:48:54. Razón: POner TAGs para facilitar la lectura de código
Responder Con Cita