Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2006.06.11;
Скачать: [xml.tar.bz2];

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.46 MB
Время: 0.012 c
2-1148538756
VitV
2006-05-25 10:32
2006.06.11
Разработка компонент.


2-1148546638
Nver
2006-05-25 12:43
2006.06.11
Иконки в ListBox


3-1145269057
RomanH
2006-04-17 14:17
2006.06.11
Цикл в хранимой процедуре


3-1145346379
Sanych_K_A
2006-04-18 11:46
2006.06.11
Ошибка при подключении к FireBird


15-1147670570
Ega23
2006-05-15 09:22
2006.06.11
С Днём рождения! 15 мая





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский