15.06.2018 / 22:41 | |
Linevic Пользователь Сейчас: Offline
Имя: Reestr2Waper Регистрация: 12.06.2014
| Цитата b0ing: Для этого, я бы использовал функцию Time и показывал уведомление через определенные интервалы времени. каждую секунду к примеру. Таким образом программа бы не тормозила на pause.Пример?
|
15.06.2018 / 22:50 | |
b0ing Пользователь Сейчас: Offline
Имя: Макс Регистрация: 24.08.2016
| Это рабочий код t0=int(time()/1000)
Do
t=int(time()/1000)
if t-t0=1 then
print g++
notify "Уведомление", "Выполнение процесса...", "com.rfo.basic", loop
t0=t
endif
until 0
|
15.06.2018 / 23:00 | |
Linevic Пользователь Сейчас: Offline
Имя: Reestr2Waper Регистрация: 12.06.2014
| Цитата b0ing: Это рабочий код
t0=int(time()/1000)
Do
t=int(time()/1000)
if t-t0=1 then
print g++
notify "Уведомление", "Выполнение процесса...", "com.rfo.basic", loop
t0=t
Спасибо, код работает. Только объясните пожалуйста, что делает такое большое количество кода? |
15.06.2018 / 23:11 | |
b0ing Пользователь Сейчас: Offline
Имя: Макс Регистрация: 24.08.2016
| Это простой вариант, можно еще сделать через функцию mod(), это остаток от деления, но это потом. ! Тут мы записываем в t0 время запуска программы, делим на 1000 - получаем секунды, int() - отсекаем все после точки, т.е приводим к целому числу.
t0=int(time()/1000)
Do
! считываем показания таймера каждую иттерацию цикла
t=int(time()/1000)
! Как только разница таймера и начала отсчета секунд достигнет 1, условие окажется верным
if t-t0=1 then
print g++
notify "Уведомление", "Выполнение процесса...", "com.rfo.basic", loop
! обнуляем начало отсчета до состояния "сейчас"
t0=t
endif
! И ждем когда пройдет секунда, чтобы условие стало true
Until 0
|
15.06.2018 / 23:46 | |
b0ing Пользователь Сейчас: Offline
Имя: Макс Регистрация: 24.08.2016
| Вот второй вариант Do
t=time()/1000
if !mod(t,1) then
print g++
notify "Уведомление", "Выполнение процесса...", "com.rfo.basic", loop
endif
until 0
Но он может оказаться капризным на очень быстрых устройствах и его придется дорабатывать, поэтому первый вариант проще. |
15.06.2018 / 23:54 | |
Linevic Пользователь Сейчас: Offline
Имя: Reestr2Waper Регистрация: 12.06.2014
| Цитата b0ing: Это простой вариант, можно еще сделать через функцию mod(), это остаток от деления, но это потом.
[code] ! Тут мы записываем в t0 время запуска программы, делим на 1000 - получаем секунды, int()[Спасибо.
|
16.06.2018 / 07:54 | |
Linevic Пользователь Сейчас: Offline
Имя: Reestr2Waper Регистрация: 12.06.2014
| b0ing, Превратил твой пример в функцию. Endif пришлось убрать. С ним функция не работает.
Прикрепленные файлы: ongoing_notify_(…).bas (0.35 кб.) Скачано 550 раз onnotify_test.bas (0.13 кб.) Скачано 666 раз |
16.06.2018 / 12:34 | |
Linevic Пользователь Сейчас: Offline
Имя: Reestr2Waper Регистрация: 12.06.2014
| Цитата b0ing: Вот второй вариант
Do
t=time()/1000
if !mod(t,1) then
print g++
notify "Уведомление", "Выполнение
А если цикл длинный, и имеет свои if'ы? Есть какой-нибудь выход? |
16.06.2018 / 13:17 | |
b0ing Пользователь Сейчас: Offline
Имя: Макс Регистрация: 24.08.2016
| Цитата Linevic: А если цикл длинный, и имеет свои if'ы? Есть какой-нибудь выход?fn.def notify(t0)
if !t0 then t0=int(time()/1000)
t=int(time()/1000)
if t-t0=1 then
print "print"
notify "Уведомление", "Выполнение процесса...", "com.rfo.basic", loop
t0=t
endif
fn.rtn t0
fn.end
Do
nt=notify(nt)
Until 0
Чую недопонимаешь ты как работают условия в рфо. Читай мануалы. if () then sub() и if () then sub() endif -- разные вещи |
16.06.2018 / 15:52 | |
1961uvg Пользователь Сейчас: Offline
Имя: Victor Откуда: Минск Регистрация: 28.07.2015
| bOing Спасибо за ссылку и пример. Но пример этот не то , что я пытаюсь сделать. Я имею ввиду под "сеткой" плоскость , например 10 на 10 узлов. Каждый узел соединен с соседними линиями. И узлы меняют свое положение по высоте, т.е. один выше , другой ниже - за счет этого получается рельеф. Раньше были алгоритмы простого создания данного эффекта, но я не могу их найти. А уже двигать саму сетку второй вопрос. Так из массива узлов , если точки соединять отдельными линиями , то быстро надоест. А использовать команду GR.POLY - не соображу ни как. Так как при создании сетки ей придется проходить через узлы по несколько , что приведет к расслоению линий. Ну короче читаю и ищу дальше.
Изменено 1961uvg (16.06 / 15:54) (всего 1 раз) |