Быстрый поиск файлов
FindFirst,FindNext и FindClose.Поиск в каталогах с большим количеством файлов (типа Windows\System32)осуществляется около 15 секунд.
Подскажите пожалуйста, если есть, другой более быстрый способ.Спасибо.
Пробовал искать файлы текущего каталога функциями
FindFirst,FindNext и FindClose.Поиск в каталогах с большим количеством файлов (типа Windows\System32)осуществляется около 15 секунд.
Подскажите пожалуйста, если есть, другой более быстрый способ.Спасибо.
~~~~~~~
У меня никогда небыло проблем с быстродействием на этих функциях! Выложи исходный текст своих поисков
~~~~~~~
У меня никогда небыло проблем с быстродействием на этих функциях! Выложи исходный текст своих поисков
-----------
Код следующий:
void __fastcall TForm1::Button1Click(TObject *Sender)
{
TSearchRec sr;
int i=0;
SetCurrentDir("c:\\Windows\\system32");
if (! FindFirst("*.*",faAnyFile | faDirectory,sr))
{
ListView1->Items->Add();
ListView1->Items->Item->Caption = sr.Name ;
while (! FindNext(sr))
{
i++;
ListView1->Items->Add();
ListView1->Items->Item->Caption = sr.Name ;
}
};
FindClose(sr);
}
В таком варианте задержка около 6 секунд. А ведь существуют программы, мгновенно отображающие имя, дату, иконку и др. инфу о файле.
-----------
Код следующий:
void __fastcall TForm1::Button1Click(TObject *Sender)
{
TSearchRec sr;
int i=0;
SetCurrentDir("c:\\Windows\\system32");
if (! FindFirst("*.*",faAnyFile | faDirectory,sr))
{
ListView1->Items->Add();
ListView1->Items->Item->Caption = sr.Name ;
while (! FindNext(sr))
{
i++;
ListView1->Items->Add();
ListView1->Items->Item->Caption = sr.Name ;
}
};
FindClose(sr);
}
В таком варианте задержка около 6 секунд. А ведь существуют программы, мгновенно отображающие имя, дату, иконку и др. инфу о файле.
как мне кажется львиную долю времени занимает
ListView1->Items->Add();
ListView1->Items->Item->Caption = sr.Name;
не знаю, как это сделать в билдере, но на WinAPI, для ListBox'a можно заранее выделить память для большого количества элементов (LB_INITSTORAGE). я думаю это значительно ускорит процесс