Главная страница
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.045 c
2-1148281922
deltav1
2006-05-22 11:12
2006.06.11
Время


2-1148401854
Juice
2006-05-23 20:30
2006.06.11
Перетаскивание формы


9-1131201020
Darthman
2005-11-05 17:30
2006.06.11
Ну вот и пришло время обогатить мир еще одним скроллером:) Цените


15-1147764176
targentor
2006-05-16 11:22
2006.06.11
Получение почты


1-1146815899
Layner
2006-05-05 11:58
2006.06.11
Поиск всех возможных комбинаций