Вниз  RFO BASIC
- 15.06.2018 / 23:11copy  #503278
b0ing
  Пользователь

b0ing 
Сейчас: Offline
Это простой вариант, можно еще сделать через функцию mod(), это остаток от деления, но это потом.

  1. ! Тут мы записываем в t0 время запуска программы, делим на 1000 - получаем секунды, int() - отсекаем все после точки, т.е приводим к целому числу.
  2. t0=int(time()/1000)
  3. Do
  4.   ! считываем показания таймера каждую иттерацию цикла
  5.   t=int(time()/1000)
  6. ! Как только разница таймера и начала отсчета секунд достигнет 1, условие окажется верным
  7.   if t-t0=1 then
  8.     print g++
  9.     notify "Уведомление", "Выполнение процесса...", "com.rfo.basic", loop
  10.     ! обнуляем начало отсчета до состояния "сейчас"
  11.     t0=t
  12.   endif
  13. ! И ждем когда пройдет секунда, чтобы условие стало true
  14. Until 0

- 15.06.2018 / 23:46copy  #503279
b0ing
  Пользователь

b0ing 
Сейчас: Offline
Вот второй вариант
  1. Do
  2.   t=time()/1000
  3.   if !mod(t,1) then
  4.     print g++
  5.     notify "Уведомление", "Выполнение процесса...", "com.rfo.basic", loop
  6.   endif
  7. until 0


Но он может оказаться капризным на очень быстрых устройствах и его придется дорабатывать, поэтому первый вариант проще.
- 15.06.2018 / 23:54copy  #503282
Linevic
  Пользователь

Linevic 
Сейчас: Offline
Цитата b0ing:
Это простой вариант, можно еще сделать через функцию mod(), это остаток от деления, но это потом.

[code]
! Тут мы записываем в t0 время запуска программы, делим на 1000 - получаем секунды, int()[
Спасибо.
- 16.06.2018 / 07:54copy  #503284
Linevic
  Пользователь

Linevic 
Сейчас: Offline
b0ing, Превратил твой пример в функцию.
Endif пришлось убрать. С ним функция не работает.


Прикрепленные файлы:
ongoing_notify_(...).bas (0.35 кб.) Скачано 245 раз
onnotify_test.bas (0.13 кб.) Скачано 240 раз
- 16.06.2018 / 12:34copy  #503289
Linevic
  Пользователь

Linevic 
Сейчас: Offline
Цитата b0ing:
Вот второй вариант
  1. Do
  2.   t=time()/1000
  3.   if !mod(t,1) then
  4.     print g++
  5.     notify "Уведомление", "Выполнение
А если цикл длинный, и имеет свои if'ы? Есть какой-нибудь выход?
- 16.06.2018 / 13:17copy  #503290
b0ing
  Пользователь

b0ing 
Сейчас: Offline
Цитата Linevic:
А если цикл длинный, и имеет свои if'ы? Есть какой-нибудь выход?
  1. fn.def notify(t0)
  2.     if !t0 then t0=int(time()/1000)
  3.     t=int(time()/1000)
  4.   if t-t0=1 then
  5.     print "print"
  6.     notify "Уведомление", "Выполнение процесса...", "com.rfo.basic", loop
  7.     t0=t
  8.   endif
  9.     fn.rtn t0
  10. fn.end
  11.  
  12.  
  13. Do
  14.   nt=notify(nt)
  15. Until 0

Чую недопонимаешь ты как работают условия в рфо.
Читай мануалы.
if () then sub()
и
if () then
   sub()
endif
-- разные вещи
- 16.06.2018 / 15:52copy  #503291
1961uvg
  Пользователь

1961uvg 
Сейчас: Offline
bOing
Спасибо за ссылку и пример.
Но пример этот не то , что я пытаюсь сделать.
Я имею ввиду под "сеткой" плоскость , например 10 на 10 узлов.
Каждый узел соединен с соседними линиями.
И узлы меняют свое положение по высоте, т.е. один выше , другой ниже - за счет этого
получается рельеф. Раньше были алгоритмы простого создания данного эффекта, но
я не могу их найти. А уже двигать саму сетку второй вопрос.
  Так из массива узлов , если точки соединять отдельными линиями , то быстро надоест.
А использовать команду GR.POLY - не соображу ни как.
Так как при создании сетки ей придется проходить через узлы по несколько , что приведет
к расслоению линий.
Ну короче читаю и ищу дальше.

Изменено 1961uvg (16.06 / 15:54) (всего 1 раз)
- 16.06.2018 / 20:11copy  #503295
Linevic
  Пользователь

Linevic 
Сейчас: Offline
Цитата b0ing:
  1. fn.def notify(t0)
  2.     if !t0 then t0=int(time()/1000)
  3.     t=int(time()/1000)
  4.   if t-t0=1 then
  5.     print "print"
  6.     notify "Уведомление", "Выполнение
Большое спасибо. Примерно так, как я и думал.
- 17.06.2018 / 13:13copy  #503304
Linevic
  Пользователь

Linevic 
Сейчас: Offline
Благодаря B0ing'у исправил функцию постоянного уведомления. Теперь всё работает. Справка и пример использования прилагаются.


Прикрепленные файлы:
ongoing_notify_(...).bas (0.68 кб.) Скачано 223 раза
onnotify_test.bas (0.13 кб.) Скачано 228 раз
- 17.06.2018 / 13:15copy  #503305
Linevic
  Пользователь

Linevic 
Сейчас: Offline
А endif всё равно пришлось убрать. С ним функция не работает.
Наверх  Всего сообщений: 2542
Фильтровать сообщения
Поиск по теме
Файлы топика (462)
Поиск по форуму
Новые вверху
  © aNNiMON (Melnik Software)
Онлайн: 38 (0/38)