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 кб.) Скачано 594 раза    onnotify_test.bas   (0.13 кб.) Скачано 737 раз   | 
  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 раз) |