Главная страница
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.054 c
2-1148540767
_RusLAN
2006-05-25 11:06
2006.06.11
Динамическое создание фреймов. Acces Violation;


2-1148664435
Firefly
2006-05-26 21:27
2006.06.11
VS2005


15-1147587877
homm
2006-05-14 10:24
2006.06.11
win XP Lite


2-1148235527
Василий Алибабаевич
2006-05-21 22:18
2006.06.11
работа со строкой


2-1148402825
И. Павел
2006-05-23 20:47
2006.06.11
бызы данных