Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 21-03-2009
alquimista alquimista is offline
Miembro
 
Registrado: ene 2008
Posts: 203
Poder: 17
alquimista Va por buen camino
Cual es la forma mas rapida de recorrer un ListView

Si un listview tiene muchos nombres de ficheros y deseo saber si un fichero esta en la listview.
¿Existe alguna forma que sea muy rapida (aunque sea en asm) de recorrer el listview? o hay que usar el tipico for o while con Items.count-1.

Como esta busqueda se va a repetir muchas veces... no se si sera lento.

Un saludo
Responder Con Cita
  #2  
Antiguo 21-03-2009
Khronos Khronos is offline
Miembro
 
Registrado: abr 2007
Posts: 298
Poder: 18
Khronos Va por buen camino
Da igual que método uses, aunque exista un método a la fuerza va a recorrer uno a uno cada item del ListView, es de lógica.

Código Delphi [-]
function ExistsInListView(const name: string; LV: TListView): boolean;
var
i: integer;
begin
result:= false;
If Name = '' then exit;
If Assigned(LV) = false then Exit;

for i:= 0 to LV.items.count -1 do
    begin
         If (lowercase(name) = lowercase(LV.items[i].caption)) then
             begin
                  result:= true;
                  Break;
             end;
    end;
end;

Podrías hacer algo como eso, también se podría hacer comparando la segunda o tercera columna. También podrías usar la funcion Pos para hacer la comparación.


Saludos.
Responder Con Cita
  #3  
Antiguo 21-03-2009
[coso] coso is offline
Miembro Premium
 
Registrado: may 2008
Ubicación: Girona
Posts: 1.678
Poder: 0
coso Va por buen camino
Hola, otra manera es usar la propiedad text, o commatext, de los items.

Código Delphi [-]

if pos(ListView1.Items.Text,nombre_fichero) <> 0 
then showmessage('se encontro');

para saber el numero de linea en la que esta, ya seria basandose en la posicion devuelta por pos. saludos.
Responder Con Cita
  #4  
Antiguo 22-03-2009
alquimista alquimista is offline
Miembro
 
Registrado: ene 2008
Posts: 203
Poder: 17
alquimista Va por buen camino
Gracias...
En el listview almaceno nombre de archivo, path, tamaño y texto de información.
Solo me interesa saber si el archivo se encuentra en el listview y comprobar por ejemplo si tiene el mismo tamaño o path.

Un saludo...
Responder Con Cita
  #5  
Antiguo 22-03-2009
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 28
Lepe Va por buen camino
Si vas a tener muchos archivos, podrías tener un TStringlist ordenado alfabéticamente, de esta forma las búsquedas van a ser mucho más rápidas usando el típico stringlist1.indexof("miarchivo").

La ordenación del los TStringlist es un QuickSort, que viene de maravilla cuando son muchos elementos.

en ese stringlist, puedes tener un puntero almacenado en la propiedad Objects, que haría referencia al TListViewItem en cuestion con el resto de datos.

Estoy algo oxidado... pero más o menos:
Código Delphi [-]
var li:TListViewItem;
      Lista:TStringlist;
      nombre:string;
begin
   Lista := TStringlist.create;
   Lista.Sorted := True;
   Lista.duplicates:= dupIgnore // ??? seguro???

  for i:= 0 to 45 do
  begin 
      li := TListViewitem.Create(Listview1);
      ListView1.items.AddItem(li);
      nombre := 'archivo ' + inttostr(i);
      li.caption := nombre;
      lista.AddObject(nombre, li);
   end;

// para encontrar el archivo 32
if lista.indexof('archivo 32')<> -1 then
  ShowMessage('found');
end;
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.
Responder Con Cita
  #6  
Antiguo 26-03-2009
alquimista alquimista is offline
Miembro
 
Registrado: ene 2008
Posts: 203
Poder: 17
alquimista Va por buen camino
Aunque conteste tarde....

Muchas gracias.... Me habeis aclarado mucho (no conocia la propiedad commatext).

La verdad es que he aprendido cosas nuevas..
Un saludo
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
Eliminar Codigo Cual es la mejor Forma ? sierraja Varios 1 12-04-2007 00:41:00
cual es la mejor forma de logearse a mysql... Arturo MySQL 1 11-10-2006 17:45:01
Cual es la manera mas rapida para copiar registros ilichhernandez Conexión con bases de datos 2 02-11-2005 02:00:57
cual es la mejor forma ? martita Varios 14 07-07-2005 19:35:55
Buscar registros de forma rapida Tecnic2 Conexión con bases de datos 2 29-09-2004 18:11:56


La franja horaria es GMT +2. Ahora son las 02:22:28.


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