Модераторы: Snowy, MetalFan, bems, Poseidon
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как остановить поиск 
:(
    Опции темы
Volkogriz
Дата 15.1.2009, 01:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Доброе время суток!
Нашол код , пост http://forum.vingrad.ru/forum/topic-199609...ектории/0.html# .
Предложил уважаймый Данкинг.
Код

procedure FindFiles(StartFolder, Mask: string; List: TStrings;
  ScanSubFolders: Boolean = True);
var
  SearchRec: TSearchRec;
  FindResult: Integer;
begin
  List.BeginUpdate;
  try
    StartFolder := IncludeTrailingBackslash(StartFolder);
    FindResult := FindFirst(StartFolder + '*.*', faAnyFile, SearchRec);
    try
      while FindResult = 0 do
        with SearchRec do
        begin
          if (Attr and faDirectory) <> 0 then
          begin
            if ScanSubFolders and (Name <> '.') and (Name <> '..') then
              FindFiles(StartFolder + Name, Mask, List, ScanSubFolders);
          end
          else
          begin
            if MatchesMask(Name, Mask) then
              List.Add(StartFolder + Name);
            application.ProcessMessages;
              end;
          FindResult := FindNext(SearchRec);
        end;
    finally
      FindClose(SearchRec);
    end;
  finally
    List.EndUpdate;
  end;
end;


Как при нажатии кнопки отмена остановить поиск!?
С уважением,
Volkogriz!!!
--------------------
("`-''-/").___..--''"`-._`6_6  ) ,,,`-.  ( ''' ).` "_-.__.')(_Y_.)'  ._''' )  `._ `. ``-.__'.-'_..`--'_..-_/'''/--'_.' ,'(il).-'''''(li).'  ((!.-'
PM MAIL ICQ   Вверх
Qu1nt
Дата 15.1.2009, 02:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Попробуй добавить флаг в тело процедуры. Ну а по-хорошему - потоки, потоки... потоки!
PM MAIL   Вверх
Данкинг
Дата 15.1.2009, 02:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Yersinia pestis
****


Профиль
Группа: Завсегдатай
Сообщений: 8302
Регистрация: 7.11.2006
Где: მოსკოვი

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



Заводишь глобальную переменную и перед application.ProcessMessages проверяешь её значение. Если оно изменено, то exit - выход из процедуры. Значение же это меняется по нажатию на твою кнопку "стоп". 
Я объяснил сильно абстрактно, но суть должна быть ясна. smile 

Это сообщение отредактировал(а) Данкинг - 15.1.2009, 02:33


--------------------
There's nothing left but silent epitaphs.
PM MAIL WWW   Вверх
Volkogriz
Дата 15.1.2009, 03:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Всем спасибо!
)))
Поточьней мона? smile 
С уважением,
Volkogriz!!!
--------------------
("`-''-/").___..--''"`-._`6_6  ) ,,,`-.  ( ''' ).` "_-.__.')(_Y_.)'  ._''' )  `._ `. ``-.__'.-'_..`--'_..-_/'''/--'_.' ,'(il).-'''''(li).'  ((!.-'
PM MAIL ICQ   Вверх
THandle
Дата 15.1.2009, 09:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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



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

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



Volkogriz, а что тут, собственно говоря, точнее? smile

Заводишь глобальную переменную(пишешь там где у тебя var Form1: TForm1, или другие имена. Ну то есть где объявление переменной формы) и проверяешь в своей функции.
Типа:
Код

if MyVar then
  Exit;


А по нажатию какой то кнопки делаешь эту переменную равной true.

Что тут не ясно?smile
 честно говоря такой подход мне не нравится. ИМХО, лучше потоки
PM   Вверх
morpheyushka
Дата 15.1.2009, 13:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Зеленый человек
**


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

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



Цитата(THandle @  15.1.2009,  09:03 Найти цитируемый пост)
ИМХО, лучше потоки. 

Согласен smile 


--------------------
user posted image
Спасибо делается вот так!!!
PM MAIL WWW   Вверх
Frees
Дата 15.1.2009, 13:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Цитата(THandle @  15.1.2009,  11:03 Найти цитируемый пост)
ИМХО, лучше потоки. 

чем лучше?


--------------------
Кольцов Виктор Владимирович
PM MAIL ICQ   Вверх
THandle
Дата 15.1.2009, 15:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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



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

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



Frees, ну представим ситуацию. У нас на форме кнопка и мемо. И есть диск на котором до фига и больше файлов.
Запускаем код в одном потоке, со всеми Application.ProcessMessages. 
В этом коде все найденные файлы добавляются в Memo.
Что мы имеем?
При перетаскивании мемо уже не обновляется.
Закрыть приложение не реально. Какие-то другие действия делать?  smile 

теперь делаем еще одно такое же приложение, только поиск файлов осуществляем в потоке и при каждом найденном делаем Synchronize в Мемо, добавляя строчку.
Что имеет тут? Никаких проблем из первого варианта у нас нет smile
И хоть пример довольно корявый, но все равно при замере времени выполнения с GetThreadTimes оказалось что с отдельным потоком работает в среднем на ~15% быстрее.

Так что... smile 
PM   Вверх
bems
Дата 16.1.2009, 21:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 3400
Регистрация: 5.1.2006

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



Цитата(THandle @  15.1.2009,  15:27 Найти цитируемый пост)
при каждом найденном делаем Synchronize в Мемо, добавляя строчку.
а еще лучше пачками, не чаще двух раз в секунду



--------------------
Обижено школьников: 8
PM MAIL   Вверх
Volkogriz
Дата 17.1.2009, 22:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Доброго времени суток!
Всем огромное спасибо!
Цитата(bems @  16.1.2009,  21:00 Найти цитируемый пост)
а еще лучше пачками, не чаще двух раз в секунду

А уточнить мона!?  smile 

--------------------
("`-''-/").___..--''"`-._`6_6  ) ,,,`-.  ( ''' ).` "_-.__.')(_Y_.)'  ._''' )  `._ `. ``-.__'.-'_..`--'_..-_/'''/--'_.' ,'(il).-'''''(li).'  ((!.-'
PM MAIL ICQ   Вверх
bems
Дата 18.1.2009, 12:21 (ссылка) |    (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 3400
Регистрация: 5.1.2006

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



Цитата(Volkogriz @  17.1.2009,  22:29 Найти цитируемый пост)
А уточнить мона!? 
можна, но не стоит. Сделай просто шоб работало. smile 



--------------------
Обижено школьников: 8
PM MAIL   Вверх
Volkogriz
Дата 18.1.2009, 17:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Спасибо!!!
Я зделал, работает!!!)))
Просто и другие варианты хочеться понять!
В учебниках толком не понять!!!)))
С уважением,
Volkogriz!!!
--------------------
("`-''-/").___..--''"`-._`6_6  ) ,,,`-.  ( ''' ).` "_-.__.')(_Y_.)'  ._''' )  `._ `. ``-.__'.-'_..`--'_..-_/'''/--'_.' ,'(il).-'''''(li).'  ((!.-'
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Для новичков"
SnowyMetalFan
bemsPoseidon
Rrader

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

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

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

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


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

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


 




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


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

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