|
0 / 0 / 0
Регистрация: 22.09.2007
Сообщений: 314
|
|
Sleep(1000): Как сделать паузу и в тоже время иметь контроль над формой?18.09.2011, 18:31. Показов 12458. Ответов 14
Метки нет (Все метки)
Как в Delphi сделать паузу и в тоже время иметь контроль над программой?
Допустим, я ставлю в цикле функцию Sleep(1000); но в эти 1000 миллисекунд надо продолжать получать сообщения от пользователя. Например если на 500-й миллисекунде он нажмет кнопку выхода, то надо выйти сразу, а не дожитаться, когда законатся остальные 500.
0
|
|
| 18.09.2011, 18:31 | |
|
Ответы с готовыми решениями:
14
Как сделать паузу во времени во время выполнения макроса? Сделать паузу во время цикла |
|
1 / 1 / 1
Регистрация: 29.04.2011
Сообщений: 28
|
|
| 19.09.2011, 00:19 | |
|
Чего то не совсем понятна ситуация. Но помоему, здесь нужно использовать отдельный поток.
0
|
|
|
3 / 3 / 3
Регистрация: 09.07.2008
Сообщений: 422
|
|
| 19.09.2011, 10:40 | |
|
Смотри в сторону TThread.
0
|
|
|
0 / 0 / 0
Регистрация: 22.09.2007
Сообщений: 314
|
|
| 19.09.2011, 11:07 [ТС] | |
|
>> Смотри в сторону TThread.
а что такое TThread? Я просто в Delphi совсем новичок, дальше простейших компонентов пока не продвинулся. Судя по названию это какой-то класс или шаблон...
0
|
|
|
1 / 1 / 0
Регистрация: 17.10.2010
Сообщений: 13
|
||||||
| 19.09.2011, 14:07 | ||||||
|
Sleep это очень плохая команда. Работает иногда не правильно, особенно когда Sleep(10) и меньше. Попробуй Thread Object (Это новый поток в твоей программе). File->new->Other и в окне New Items выбери Thread Object. Тогда используй это:
Application.ProcessMessages
0
|
||||||
|
0 / 0 / 0
Регистрация: 22.09.2007
Сообщений: 314
|
||||||
| 19.09.2011, 14:20 [ТС] | ||||||
|
А у мен ят так используется Application.ProcessMessages, сразу после sleep(1000). Вто кусок моей программы:
Это обработчик кнопки:
0
|
||||||
|
1 / 1 / 7
Регистрация: 28.06.2011
Сообщений: 342
|
||||||
| 20.09.2011, 15:10 | ||||||
|
Sleep _ это функция Win API... Потому (о потоках - забудь.. фигню тут тебе написали) напиши свою функцию а-ля Sleep.. Это будет цикл с использованием GetTickCount вида
0
|
||||||
|
1 / 1 / 7
Регистрация: 28.06.2011
Сообщений: 342
|
|
| 20.09.2011, 15:14 | |
|
А то, что ты после Sleep(1000) вызываешь ProcessMessages - тоже лажа... Ведь пауза делается в Sleep.. до ProcessMessages код еще не выполнился..:-).. Точнее, прога все-таки реагирует.. Только очень дергано.. так ? А вообще, что за задача ? или так, практика ума ?
0
|
|
|
0 / 0 / 0
Регистрация: 22.09.2007
Сообщений: 314
|
||||||
| 20.09.2011, 15:34 [ТС] | ||||||
|
То, что ProcessMessages не выполняется я и сам понимаю, и что Sleep - наследство доса, вообще устаревшая парадигма программирования тоже понятно. Вообще идея с потоками мне показалась интересной, тк это естественнее, оборвать программу (предусмотрев такую возможность), а всякие хитрости с собственной паузой это немного не то. Но в потоках я еще не разобрался и экспериментировал по всякому. И мне подсказали решение, как две капли воды похожее на то, что тв мне предложил. Вот оно:
0
|
||||||
|
0 / 0 / 0
Регистрация: 22.09.2007
Сообщений: 314
|
|
| 20.09.2011, 15:37 [ТС] | |
|
Но оно мне кажется менее красивым, чем с потоками. Хотя некоторые не рекомендуют использовать потоки без надобности. Да и Sleep оказалась pure Win32, так что.... Остались вопросы: а что такое GetTickCount?
А прога эта - реализация математической игры 'Жизнь Джона Конуэя', т.е. для души...
0
|
|
|
1 / 1 / 7
Регистрация: 28.06.2011
Сообщений: 342
|
|
| 20.09.2011, 17:07 | |
|
Птоки нужно использовать, если решаешь одновременно несколько задач.. В принципе, в этом нет ничего плохого.. Только нужно ли это конкретно здесь ? Тебе решать - твоя задача..Я вообще больше по работе с БД специализируюсь...
0
|
|
|
0 / 0 / 0
Регистрация: 22.09.2007
Сообщений: 314
|
|
| 20.09.2011, 17:10 [ТС] | |
|
вто именно что здесь это как раз не надо
простой алгоритм работы с массивом, все линейно.
0
|
|
|
0 / 0 / 0
Регистрация: 22.09.2007
Сообщений: 314
|
|
| 20.09.2011, 17:10 [ТС] | |
|
А что все таки такое GetTickCount???
0
|
|
|
1 / 1 / 0
Регистрация: 17.10.2010
Сообщений: 13
|
|
| 22.09.2011, 15:31 | |
|
Да, ну и жёсткая критика! Я написал про ProcessMessage, как один из вариантов, но не лепить его перед слипом или после. Я сам знаю, что это ничего не даст. GetTickCount это функция которая берёт системное время (миллисекунды). Ну ты делаешь свой цикл и в смотришь сколько прошло миллисекунд когда ты в нём крутился.
0
|
|
|
KRlSTO
|
|||||||||||
| 25.03.2012, 13:12 | |||||||||||
|
Попробуй немного модернизированную паузу:
|
|||||||||||
| 25.03.2012, 13:12 | |
|
Помогаю со студенческими работами здесь
15
Можно ли сделать бат файл, в котором будет 3 подпункта и один из подпунктов тоже будет иметь свое меню?
Как реализовать паузу во время выполнения программы Как Sleep() считает время ? Как сделать паузу? Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога
Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
|
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
|
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога
В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
|
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога
Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
|
|
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога
Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
|
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога
Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
|
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования.
Часть библиотеки BedvitCOM
Использованы. . .
|
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога
SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
|