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

Вниз

Поиск файлов   Найти похожие ветки 

 
Ezhik   (2004-09-24 01:52) [0]

Добрый вечер. У меня есть рекурсивная функция, которая ищет все файлы и папки в заданой дериктории и поддериктории. Указиваю я начальную дерикторию с помошью компоненты DirectoryList. Эта функция визивается при событии DirectoryListBox1Change. При креейте моей формы я задаю начальную дерикторию С:\ и сразу же вызивается обработчик события DirectoryListBox1Change, который в свою очередь вызивает мою функцию поиска. Буквально через несколько секунд весь найденый список файлов (уменя  более 30000) уже передомною. Когда же я вручную меняю дерикторию, также происходит тот же сценарий, НО, ищет в томже С:\ более 2.5 мин. Как такое может быть??? :(
Вот моя функция:

procedure findall(dir:string);
var
rec: TSearchRec;
res: integer;
begin
 res:=FindFirst(dir + "\*.*",faAnyFile,rec);
 res:=findNext(rec);
 While res=0 do                                  
 begin
   if (rec.Attr=faDirectory) and ((rec.Name=".")or(rec.Name="..")) then
   begin
     Res:=FindNext(rec);
     Continue;
   end;
   if (rec.Attr= faDirectory) then      
   begin
     Form1.StringGrid1.RowCount:= Form1.StringGrid1.RowCount + 1;
     Form1.StringGrid1.Cells[1,Form1.StringGrid1.RowCount-2]:= "+ " + dir + "\" + rec.Name + "\";
     Form1.StringGrid1.Cells[0,Form1.StringGrid1.RowCount-2]:= "Ïàïêà";
     findall(dir + "\" + rec.Name);
     Res:=FindNext(rec);
     Continue;
   end
   else
   begin
     Form1.StringGrid1.RowCount:= Form1.StringGrid1.RowCount + 1;
     Form1.StringGrid1.Cells[0,Form1.StringGrid1.RowCount-2]:= "File";
     Form1.StringGrid1.Cells[1,Form1.StringGrid1.RowCount-2]:= "- " + dir + "\" + rec.Name;
     Form1.StringGrid1.Cells[2,Form1.StringGrid1.RowCount-2]:= IntToStr(rec.Size);
     if Form1.CheckBox1.Checked then
     try
       Form1.StringGrid1.Cells[3,Form1.StringGrid1.RowCount-2]:= DateTimeToStr(FileDateToDateTime(FileAge(ShortName+rec.Name)));
     except
       try
         Form1.StringGrid1.Cells[3,Form1.StringGrid1.RowCount-2]:= DateTimeToStr(FileTimeToDateTime(rec.FindData.ftCreationTime));
       except
         Form1.StringGrid1.Cells[3,Form1.StringGrid1.RowCount-2]:= "error";
       end;
     end;
   end;
   Res:=FindNext(rec);
   Application.ProcessMessages;
   if Application.Terminated then Break;
   WaitForm.Caption:= IntToStr(Form1.StringGrid1.RowCount - 2);
 end;
 FindClose(rec);
end;


 
DiamondShark ©   (2004-09-24 02:02) [1]

Так она попадает на директории . и .. и рекурсивно в них ищет.


 
Ezhik   (2004-09-24 02:11) [2]

Правильно, но почему при креейте мгновенно, а при ручном изменении ооочень долго ищет??? Хоть последовательность таже и ничего лишнего.


 
Ezhik   (2004-09-24 17:49) [3]

Удалено модератором
Примечание: Создание пустых сообщений



Страницы: 1 вся ветка

Форум: "Основная";
Текущий архив: 2004.10.10;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.45 MB
Время: 0.047 c
4-1094794580
needle
2004-09-10 09:36
2004.10.10
Как узнать принадлежит-ли компьютер к какому-либо домену?


14-1094669161
olookin
2004-09-08 22:46
2004.10.10
We are living in Amerika - Rammstein


4-1094078916
terra0
2004-09-02 02:48
2004.10.10
создание потока


14-1092729585
Piter
2004-08-17 11:59
2004.10.10
Magic Forum beta9 - клиент форумов "Мастера Дельфи" и "Дремучие"


1-1095939520
Kniaz
2004-09-23 15:38
2004.10.10
Блокирование файла





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