Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > Delphi: Для новичков > Как остановить поиск |
Автор: Volkogriz 15.1.2009, 01:14 | ||
Доброе время суток! Нашол код , пост http://forum.vingrad.ru/forum/topic-199609/kw-поиск-директории/0.html# . Предложил уважаймый Данкинг.
Как при нажатии кнопки отмена остановить поиск!? С уважением, Volkogriz!!! |
Автор: Qu1nt 15.1.2009, 02:05 |
Попробуй добавить флаг в тело процедуры. Ну а по-хорошему - потоки, потоки... потоки! |
Автор: Данкинг 15.1.2009, 02:31 |
Заводишь глобальную переменную и перед application.ProcessMessages проверяешь её значение. Если оно изменено, то exit - выход из процедуры. Значение же это меняется по нажатию на твою кнопку "стоп". Я объяснил сильно абстрактно, но суть должна быть ясна. ![]() |
Автор: Volkogriz 15.1.2009, 03:04 |
Всем спасибо! ))) Поточьней мона? ![]() С уважением, Volkogriz!!! |
Автор: THandle 15.1.2009, 09:03 | ||
Volkogriz, а что тут, собственно говоря, точнее? ![]() Заводишь глобальную переменную(пишешь там где у тебя var Form1: TForm1, или другие имена. Ну то есть где объявление переменной формы) и проверяешь в своей функции. Типа:
А по нажатию какой то кнопки делаешь эту переменную равной true. Что тут не ясно? ![]() честно говоря такой подход мне не нравится. ИМХО, лучше http://forum.vingrad.ru/forum/topic-60076.html. |
Автор: morpheyushka 15.1.2009, 13:03 |
Согласен ![]() |
Автор: Frees 15.1.2009, 13:10 |
чем лучше? |
Автор: THandle 15.1.2009, 15:27 |
Frees, ну представим ситуацию. У нас на форме кнопка и мемо. И есть диск на котором до фига и больше файлов. Запускаем код в одном потоке, со всеми Application.ProcessMessages. В этом коде все найденные файлы добавляются в Memo. Что мы имеем? При перетаскивании мемо уже не обновляется. Закрыть приложение не реально. Какие-то другие действия делать? ![]() теперь делаем еще одно такое же приложение, только поиск файлов осуществляем в потоке и при каждом найденном делаем Synchronize в Мемо, добавляя строчку. Что имеет тут? Никаких проблем из первого варианта у нас нет ![]() И хоть пример довольно корявый, но все равно при замере времени выполнения с GetThreadTimes оказалось что с отдельным потоком работает в среднем на ~15% быстрее. Так что... ![]() |
Автор: bems 16.1.2009, 21:00 | ||
|
Автор: Volkogriz 17.1.2009, 22:29 |
Доброго времени суток! Всем огромное спасибо! А уточнить мона!? ![]() |
Автор: bems 18.1.2009, 12:21 |
можна, но не стоит. Сделай просто шоб работало. ![]() |
Автор: Volkogriz 18.1.2009, 17:49 |
Спасибо!!! Я зделал, работает!!!))) Просто и другие варианты хочеться понять! В учебниках толком не понять!!!))) С уважением, Volkogriz!!! |