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
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;
if lista.indexof('archivo 32')<> -1 then
ShowMessage('found');
end;