Главная страница
    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.016 c
2-1148583505
Benjamin
2006-05-25 22:58
2006.06.11
pleace help ME!!!!


3-1145411027
NigthSkif
2006-04-19 05:43
2006.06.11
SQL и обновление таблиц


2-1148282161
deltav1
2006-05-22 11:16
2006.06.11
TThread


2-1148705317
Urvin
2006-05-27 08:48
2006.06.11
Проверка наличия файла


2-1148143099
rar
2006-05-20 20:38
2006.06.11
повысить скорость поиска файлов





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский