Поиск:

Ответ в темуСоздание новой темы Создание опроса
> отдельный поток, процесс.. 
V
    Опции темы
WapCel
Дата 19.6.2009, 16:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 102
Регистрация: 3.11.2008
Где: Moldova

Репутация: нет
Всего: нет



Привет!smile
Вот функция поиска файлов:
Код

void SearchFiles(AnsiString Folder,AnsiString File, int &Size,int &fCount,int &folCount, AnsiString &nFiles)
{
  TSearchRec SR;
  if(Folder[Folder.Length()] == '\\') { Folder.SetLength(Folder.Length()-1); }
  if(FindFirst(Folder+"\\"+File,faAnyFile,SR) == 0)
   do
      { 
         if(SR.Name != "." &&  SR.Name != ".." && !(SR.Attr & faSysFile))
         { 
            if((SR.Attr & faDirectory)!=0)
               {
                  SearchFiles(Folder+"\\"+SR.Name, File, Size, fCount, folCount, nFiles);
                  folCount++;
               }
            else
               {
                  Size = Size + SR.Size;
                  fCount++;
                  //if (FileExists(Folder+ "\\" + SR.Name))
                  //{
                  //if (SR.Size >= 1024*1000)
                  //{
                  nFiles += Folder + "\\" + SR.Name + " ("+SR.Size+" Bytes)" + "\r\n";
                  //}
                  //}
                  //else
                  //{
                  //nFiles += "[!] " + Folder+ "\\" + SR.Name + "\r\n";
                  //}
               }
         }
      }
   while(FindNext(SR)==0);
    FindClose(SR);
}

Фyнкция работает отлично.
Но если она долго работает форма (окно) зависает..
Как сделать так чтобы когда функция работала можно было работать формой дальше? (как в поиске из Windows)
(Нужен отдельный поток, процесс.. Не знаю..) smile 
PM MAIL WWW ICQ   Вверх
mrbrooks
Дата 19.6.2009, 16:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


трололомен
****


Профиль
Группа: Завсегдатай
Сообщений: 4259
Регистрация: 4.10.2006
Где: Дол Гулдур

Репутация: 167
Всего: 306



Цитата(WapCel @  19.6.2009,  16:40 Найти цитируемый пост)
Как сделать так чтобы когда функция работала можно было работать формой дальше?

Использовать потоки. 
Юзать TThread - класс VCL. Как? - в поиск. Много раз было.

Можно также посмотреть в сторону beginthreadex (CreateThread - не рекомендуется, но если хочется, то можно  smile )

PM MAIL   Вверх
WapCel
Дата 19.6.2009, 16:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 102
Регистрация: 3.11.2008
Где: Moldova

Репутация: нет
Всего: нет



mrbrooks,  smile Please......
PM MAIL WWW ICQ   Вверх
Artemon
Дата 19.6.2009, 17:01 (ссылка)   | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


а ты мне нравишься
***


Профиль
Группа: Завсегдатай
Сообщений: 1771
Регистрация: 24.2.2004
Где: Челябинск

Репутация: 7
Всего: 20



WapCel, хочешь увидеть чудо ?

Вставь вот этот код в свой цикл, который дольше всего выполняется:

Код

Application->ProcessMessages();




--------------------
Контроль топлива на топливозаправщиках, мониторинг автотранспорта, расчет зарплаты водителей www.rscat.ru
PM MAIL   Вверх
THandle
Дата 20.6.2009, 16:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Хранитель Клуба
Group Icon
Награды: 1



Профиль
Группа: Админ
Сообщений: 3639
Регистрация: 31.7.2007
Где: Moscow, Dubai

Репутация: 25
Всего: 372



Artemon, не самое радостное чувство..

http://forum.vingrad.ru/index.php?showtopi...t&p=1757937

Вообще про поиск файлов довольно интересная темка есть, на мой взгляд:

http://forum.vingrad.ru/forum/topic-238020...1/view-all.html


Насчет потоков(TThread) лучшая статья(тоже на Delphi примеры):

http://forum.vingrad.ru/forum/topic-60076.html 
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++ Builder"
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по С++ Builder обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Настоятельно рекомендуем заглянуть в DRKB (Delphi Russian Knowledge Base) - крупнейший в рунете сборник материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Rrader.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C++ Builder | Следующая тема »


 




[ Время генерации скрипта: 0.1317 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.