Страница 1 из 2
Пауза в программе
Добавлено: 20 Ноябрь 2015, 15:05
pansoft
Добрый день всем!
Задача такая: при нажатии кнопки отправляется запрос на сервер, ответ приходит через 1 до 5 минут(примерно).
Код: Выделить всё
Send() ! отправка запроса на сервере
loc:res=''
LOOP
loc:res=Respons() ! Проверка ответа на сервере
If loc:res<>'' then break.
.........
end
Как сделать в цикле паузу на 10-15 секунд?
Пауза в программе
Добавлено: 20 Ноябрь 2015, 15:12
RaFaeL
Таймер на окно, включать по кнопке, отдельный цикл не нужен
Пауза в программе
Добавлено: 20 Ноябрь 2015, 15:40
kreator
Ну если нужна пауза, то типа так:
Код: Выделить всё
LOC:Time = clock()
loop
until (clock()-LOC:Time)>15000
Пауза в программе
Добавлено: 20 Ноябрь 2015, 15:41
Ал
Как сделать в цикле паузу на 10-15 секунд?
sleep(миллисекунды), работает точно, в хелпе посм. "...To add the SLEEP prototype to your application, include the following MODULE structure inside the Global Map of your program or application..."
зы. можно с beep... - но мне не нравиться, совсем как в бейсике
Пауза в программе
Добавлено: 20 Ноябрь 2015, 16:23
Admin
RaFaeL писал(а): Таймер на окно, включать по кнопке, отдельный цикл не нужен
+ за эту реализацию.
Пауза в программе
Добавлено: 20 Ноябрь 2015, 16:25
Дед Пахом
Обычно пользуются асинхронными запросами.
Пауза в программе
Добавлено: 20 Ноябрь 2015, 16:43
Ал

началось...
Домой пора, а не глобальные вопросы решать
Дед Пахом писал(а):Обычно пользуются асинхронными запросами.
для целей
отправляется запрос на сервер
+
для
...сделать... паузу на 10-15 секунд
- просто sleep(1000) или таймер если религия не позволяет апи подключать
Пауза в программе
Добавлено: 20 Ноябрь 2015, 16:45
Yufil
Ещё был такой извращённый вариант, с вложенным Accept
Код: Выделить всё
0{Prop:Timer} = 1000
Accept
Case Event()
Of event:Timer
Break
End
If Response()
Break
End
End
Response вызывается раз в 10 секунд
Ещё плюс, что можно было ловить и другие прерывания во время паузы
Код: Выделить всё
Case Event()
Of event:Timer
...
Of event:Accepted
If Accepted() = ?CancelButton
...
End
End
Но это было давно, в новых версиях Клариона проверять надо...
Пауза в программе
Добавлено: 20 Ноябрь 2015, 16:45
Ал
Admin писал(а): RaFaeL писал(а): Таймер на окно, включать по кнопке, отдельный цикл не нужен
+ за эту реализацию.
в коде где нужна пауза может просто не быть окна?
Всем - Хороших выходных!
Пока.
Пауза в программе
Добавлено: 20 Ноябрь 2015, 16:48
RaFaeL
Ал писал(а): в коде где нужна пауза может просто не быть окна?
В исходном задании сказано "при нажатии кнопки", раз есть кнопка то должно быть и окно?
Пауза в программе
Добавлено: 20 Ноябрь 2015, 16:52
RaFaeL
Yufil писал(а): Ещё был такой извращённый вариант, с вложенным Accept
Че-то как-то непонятно. Вот простой вариант:
По кнопке:
На окне:
Код: Выделить всё
of event:timer
if loc:button
loc:res=Respons() ! Проверка ответа на сервере
If loc:res<>''
loc:button=0
do something
end
end
Панель открытых окон из соседней темы именно так и работает
Пауза в программе
Добавлено: 20 Ноябрь 2015, 16:52
Ал
RaFaeL писал(а):Ал писал(а): в коде где нужна пауза может просто не быть окна?
В исходном задании сказано "при нажатии кнопки", раз есть кнопка то должно быть и окно?
Верно! И ещё -
Но в более общем случае возможно что после отладки это будет просто сервис без кнопок и прочего?

Пауза в программе
Добавлено: 20 Ноябрь 2015, 16:54
RaFaeL
Ал писал(а): ...Как сделать в цикле...
Accept цикл чем тебе не цикл?

Пауза в программе
Добавлено: 20 Ноябрь 2015, 17:02
Ал
RaFaeL писал(а): Ал писал(а): ...Как сделать в цикле...
Accept цикл чем тебе не цикл?

Да цикл, же цикл.
Но предположим - нет в коде кнопок, окон и каких-либо циклов вообще..., а пауза между командами нужна очень, как быть?
Пауза в программе
Добавлено: 20 Ноябрь 2015, 17:03
Дед Пахом
Нет окна - нарисуй и спрячь.