Страница 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
Ал
:) началось...
Домой пора, а не глобальные вопросы решать :lol:
Дед Пахом писал(а):Обычно пользуются асинхронными запросами.
для целей
отправляется запрос на сервер
+

для
...сделать... паузу на 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
Че-то как-то непонятно. Вот простой вариант:

По кнопке:

Код: Выделить всё

Send()
loc:button=1
На окне:

Код: Выделить всё

of event:timer
  if loc:button
    loc:res=Respons() ! Проверка ответа на сервере
    If loc:res<>''
      loc:button=0       
      do something
    end
  end
Панель открытых окон из соседней темы именно так и работает

Пауза в программе

Добавлено: 20 Ноябрь 2015, 16:52
Ал
RaFaeL писал(а):
Ал писал(а): в коде где нужна пауза может просто не быть окна?
В исходном задании сказано "при нажатии кнопки", раз есть кнопка то должно быть и окно?
Верно! И ещё -

Код: Выделить всё

...Как сделать в цикле...
:)
Но в более общем случае возможно что после отладки это будет просто сервис без кнопок и прочего? :wink:

Пауза в программе

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

Пауза в программе

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

Пауза в программе

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