Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.06.11;
Скачать: CL | DM;

Вниз

повысить скорость поиска файлов   Найти похожие ветки 

 
rar   (2006-05-20 20:38) [0]

У меня такой вопрос. как можно повысить скорость поиска файлов на диске.
Процедура поиска использует  рекурсию. Поиск производится по нескольким расширениям.
Список расширений находится в checkListBox наличие расширения в файле проверяю с помощью Matchesmask.
алгоритм поиска следующий.
все выбранные расширения из Checklistbox помещаю в Stringlist.
затем при поиске проверяю каждый файл на наличие в нем расширения из stringlist
и т.д. может есть что-то более быстрое.


 
AlexWlad ©   (2006-05-20 20:40) [1]


> rar   (20.05.06 20:38)  
> ...все выбранные расширения из Checklistbox помещаю в Stringlist...


Ну и зачем дублировать???


 
Anatoly Podgoretsky ©   (2006-05-20 20:45) [2]

stringlist работает очень быстро, видимо ты неверно с ним работаешь.


 
13   (2006-05-20 20:51) [3]

вот так помещаю

private
   { Private declarations }

   Criterialist:TstringList;

.......

procedure TMainForm.GetCriteria;
var
i:byte;
begin
Criterialist:=TStringList.Create;
for i:=0 to OptionsForm.CheckListBox1.Items.Count-1 do
 if OptionsForm.CheckListBox1.Checked[i]=true then
  begin
   CriteriaList.Add(Optionsform.CheckListBox1.Items[i]);
  end;
end;

вот так проверяю

function TMainForm.proverka(StrList:string): boolean;
var
i:byte;
begin
Result:=false;
for i:=0 to CriteriaList.Count-1 do
 begin
  if Matchesmask(Strlist, CriteriaList.Strings[i]) then Result:=true;
 end;
end;



Rashirenie:=AnsiLowerCase(SR.name);
        if Proverka(Rashirenie)=true then
добавляю в Listview


 
rar   (2006-05-20 20:54) [4]

просто на компе у друга а у него имя другое


 
Anatoly Podgoretsky ©   (2006-05-20 21:05) [5]

Во первых весь список прогоняется от начала до конца, вне зависимости найдено или нет.
Во вторых а что такое StrList


 
AlexWlad ©   (2006-05-20 21:07) [6]


> 13   (20.05.06 20:51) [3]
> добавляю в Listview


А вот с этого места поподробнее. Сколько примерно файлов в результате поиска? Listview при большом к-ве Итемов начинает жутко тормозить.

И еще, если ищешь ТОЛЬКО по расширениям и в них не используются ? и *, тогда имеет смысл перегонять их в СтрингЛист, а во время поиска делать

Strlist.Find(ExtractFileExt(SR.name));

Иначе вполне можно обойтись без

for i:=0 to OptionsForm.CheckListBox1.Items.Count-1 do
if OptionsForm.CheckListBox1.Checked[i]=true then
 begin
  CriteriaList.Add(Optionsform.CheckListBox1.Items[i]);
 end;


 
rar   (2006-05-21 08:18) [7]


> Во вторых а что такое StrList
>

StrList-имя файла проверяемого на наличие в нем расширения.
> если ищешь ТОЛЬКО по расширениям и в них не используются
> ? и *,

Как раз таки используется

> добавляю в Listview
>
>
> А вот с этого места поподробнее.

добавляю так
with ListView1.Items.Add do
begin
Caption:=SR.Name;
и т.д.
end;


> Во первых весь список прогоняется от начала до конца, вне
> зависимости найдено или нет.

А как сделать чтобы не весь? В голову ничего другого не приходит.


 
Мефисто   (2006-05-21 09:32) [8]

Перед добавлением инфы
ListView1.Items.BeginUpdate;

По завершении ввода всей инфы
ListView1.Items.EndUpdate



Страницы: 1 вся ветка

Текущий архив: 2006.06.11;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.04 c
3-1145349957
Pashka_cool
2006-04-18 12:45
2006.06.11
FireBird 1.5 на 2003 Windows Server - база после запуска падает.


15-1147763288
Kolan
2006-05-16 11:08
2006.06.11
Где взять про объектное связывание?


2-1148633281
ASW
2006-05-26 12:48
2006.06.11
Работа с группой компонентов


15-1147786895
Andy BitOff
2006-05-16 17:41
2006.06.11
Может кто знает форум ...


1-1146815087
zhegulov
2006-05-05 11:44
2006.06.11
Формирование XML-файла