Таймер обратного отчета

Обсуждение программ nnCron и nnCron LITE

Таймер обратного отчета

Postby MasterW » Fri, 18 Aug 2006, 23:36

Помогите сделать реализацию таймера обратного отчета.
Суть задачи:
При нажатии на ctrl+shift+alt+t (^@+{0x54}) выводить окошко с полем для вода минут (желательно и секунд по умолчанию 00)
по истечению указанного времени запускать wav композицию. Какие есть варианты решения?

#( Timer
HyperActive
VARIABLE alarm
WatchHotKey: "^@+{0x54}"
Action:
WIN-INPUT-TEXT: "Установить таймер" "Введи сюда время" "пока в милисекундах" 10

PAUSE: <%alarm%>

вопрос. как записать значение с формы в переменную?
MasterW
 
Posts: 52
Joined: Sat, 10 Jun 2006, 16:07
Location: RND

Postby Lynx » Sat, 19 Aug 2006, 00:43

В помощи по WIN-INPUT-TEXT написан же пример:
Code: Select all
#( test_win_input_text2
\ преобразовываем строку в число
CREATE input_years 256 ALLOT
NoActive
Action:
WIN-INPUT-TEXT: "The last test" "How old are you?" "Enter two digits only!" 0 0=
IF
    2DUP
    input_years PLACE
    \ преобразовываем строку в число
    \ и убеждаемся, что полученное число больше или равно 18:
    [b]S>NUM[/b] 18 >=
    IF
        MSG: "You are >= 18 (%input_years COUNT% years old actually)!"
    ELSE
        MSG: "You are at unknown age or < 18 (%input_years COUNT%) so you can not proceed!"
    THEN
ELSE
    MSG: "This user is at unknown age..."
THEN
)#

Посмотри немного пример, разберись и никаких проблем :)
User avatar
Lynx
 
Posts: 321
Joined: Thu, 04 May 2006, 20:07
Location: Уфа

Postby MasterW » Sat, 19 Aug 2006, 02:10

В том то и дело что этот пример не работает!!!! А что означает слово DUP?
MasterW
 
Posts: 52
Joined: Sat, 10 Jun 2006, 16:07
Location: RND

Postby roman78 » Sat, 19 Aug 2006, 09:52

MasterW wrote:А что означает слово DUP?

дублирование верхнего элемента стека
roman78
 
Posts: 57
Joined: Sat, 06 Nov 2004, 20:52

Postby SeMa » Sat, 19 Aug 2006, 10:53

MasterW wrote:В том то и дело что этот пример не работает!!!!

В кроне (форте?) нет слова >=.
Откуда оно могло взяться в примере в справке? Господа разработчики, промашка?

MasterW wrote:А что означает слово DUP?

Слово 2DUP дублирует два верхних числа стека.

( x1 x2 --> x1 x2 x11 x22 )

Параметры
x1
x2

на стеке обязательно должны присутствовать два числа, иначе нечего будет дублировать !

Возвращемые значения
x11
x22

продублированные числа точно соответствуют числам х1 x2 по значению и по знаку.
Компьютер ─ устройство, разработанное для ускорения и автоматизации человеческих ошибок
User avatar
SeMa
 
Posts: 637
Joined: Fri, 15 Apr 2005, 12:49
Location: Украина

Postby MasterW » Sat, 19 Aug 2006, 23:04

вопрос. как записать значение с формы в переменную?
MasterW
 
Posts: 52
Joined: Sat, 10 Jun 2006, 16:07
Location: RND

Postby Lynx » Sat, 19 Aug 2006, 23:33

Неужели лень прочитать помощь?

вопрос. как записать значение с формы в переменную?

Хорошо. Ответ - PLACE.
User avatar
Lynx
 
Posts: 321
Joined: Thu, 04 May 2006, 20:07
Location: Уфа

Postby MasterW » Sun, 20 Aug 2006, 00:41

Спасибо огромное. На самом деле я помощь исчитал вдоль и поперек, но так и не понял как теперь вывести значение из переменной в
PAUSE: <число>
MasterW
 
Posts: 52
Joined: Sat, 10 Jun 2006, 16:07
Location: RND

Postby Lynx » Sun, 20 Aug 2006, 01:40

Опять же, плохо читал :P
Code: Select all
input_geography COUNT S>NUM PAUSE
User avatar
Lynx
 
Posts: 321
Joined: Thu, 04 May 2006, 20:07
Location: Уфа

Postby MasterW » Mon, 21 Aug 2006, 12:51

Code: Select all
#( Timer
CREATE alarm 256 ALLOT
WatchHotKey: "^@+{0x54}"
Action:
WIN-INPUT-TEXT: "Установить таймер" "Введите время" "пока в милисекундах" 10 0=
   IF
   alarm PLACE
   alarm COUNT S>NUM PAUSE
   PLAY-SOUND: "C:\Program Files\nnCron\plugins\alarm.wav"
   MSG: "%alarm COUNT%"
   THEN
)#


Вот что получилось.

Как сделать, чтоб ввод выполнялся в секундах. Т.е. гдето надо умножить на 1000, а как это сделать, я не въеду.
MasterW
 
Posts: 52
Joined: Sat, 10 Jun 2006, 16:07
Location: RND

Postby Lynx » Mon, 21 Aug 2006, 13:23

Code: Select all
alarm COUNT S>NUM 1000 * PAUSE

?
User avatar
Lynx
 
Posts: 321
Joined: Thu, 04 May 2006, 20:07
Location: Уфа

Postby MasterW » Mon, 21 Aug 2006, 23:26

Lynx, cпасибо огромное, хоть чуть-чуть стал разбираться со стеком. А то по примерам, тем более не работающим, вообще ничего не понятно.

Теперь хотелось бы ввести такую тему.
Допустим в форму вводим не только время, но и другие параметры.
Можно ли в одном окне сделать несколько полей для ввода?
Если нет, то тогда необходимо следующее
Допустим параметра 4
1. Часы
2. Минуты
3. Тип мелодии
4. ВЫключить ли комп по истечению времени

Выглядит это примерно так
1 32 2 0

ДУмаю реализовать с помощью
<значение_на_стеке>
CASE
<возможное_значение> OF действие (значение на стеке совпало с возможным значением) ENDOF
<возможное_значение> OF действие (значение на стеке совпало с возможным значением) ENDOF
\ ...
<возможное_значение> OF действие (значение на стеке совпало с возможным значением) ENDOF
<возможное_значение> OF действие (значение на стеке совпало с возможным значением) ENDOF
DUP OF действие (значение на стеке не совпало ни с одним из проверяемых значений) ENDOF
ENDCASE

Вопрос. Как отделить значения из формы в разные переменные, и вообще как всё это сделать.
MasterW
 
Posts: 52
Joined: Sat, 10 Jun 2006, 16:07
Location: RND

Postby Lynx » Tue, 22 Aug 2006, 08:45

Как отделить значения из формы в разные переменные, и вообще как всё это сделать.

1 вариант. Ищем в строке разделитель (пробел, например) и отделяем полученные подстроки в отдельные переменные, затем преобразуем эти переменные в числа (поиск и деление строк см Помощь-> Доп. инфа-> Неотложная помощь по Форту, там много про работу со строками написано).
2 вариант. Использовать regexp'ы. Будет проще (кажется) и заодно с их помощью можно проверить корректность ввода (т.е. ввели ли 4 параметра или 3 и т.д.).
User avatar
Lynx
 
Posts: 321
Joined: Thu, 04 May 2006, 20:07
Location: Уфа

Postby unreal666 » Tue, 22 Aug 2006, 13:15

В кроне (форте?) нет слова >=.
Откуда оно могло взяться в примере в справке? Господа разработчики, промашка?

Надо добавить подобные слова или nncron.ini или в какой-нибудь плагин.
Хотя вместо >= можно использовать < 0= (или < NOT).
Но все равно лучше ввести эти слова. Так задачи будут визуабельнее.
User avatar
unreal666
 
Posts: 83
Joined: Fri, 25 Nov 2005, 00:07
Location: Россия, Владивосток

Postby MasterW » Tue, 22 Aug 2006, 22:17

Как использовать пробелы в принципе понятно. По напрягаться и написать получится. А вот как использовать regexp'ы для конкретной задачи
вообще невъеду. Какой примерно алгоритм? желательно с небольшим куском)))
MasterW
 
Posts: 52
Joined: Sat, 10 Jun 2006, 16:07
Location: RND

Next

Return to nnCron forum (Russian)

Who is online

Users browsing this forum: No registered users and 2 guests