Поиск дочернего окна

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

Re: Поиск дочернего окна

Postby VoidVolker » Fri, 22 Nov 2013, 15:17

Code: Select all
: sec>hh:mm:ss   \ ( sec -- a u ) Преобразовать число секунд в строку вида hh:mm:ss
    60 /MOD 60 /MOD \ Sec Min Hour
    ROT S>D <#
    # # 2DROP  [CHAR] : HOLD
    SWAP S>D # # 2DROP  [CHAR] : HOLD
    S>D # #
    #>
;


Если скучно живется — еще можно попробовать заюзать strings.spf :mrgreen:
95% вопросов уже обсуждались на форуме или ответы на них есть в мануале.        nnCron 1.93 b15.exe
Как правильно задавать вопросы.
User avatar
VoidVolker
Site Admin
 
Posts: 2898
Joined: Tue, 25 Apr 2006, 17:56

Re: Поиск дочернего окна

Postby Burunduk » Fri, 22 Nov 2013, 19:10

VoidVolker wrote:Если скучно живется


Опять весело!

В хелпе Крона нашёл описание констpукции S>D <# #S #>
Пояснения:

    слова <# и #> обозначают начало и конец форматирования;
    слово # пpеобpазует одну цифpу в заданной системе счисления;
    слово #S - сpазу всё число;
    слово SIGN вставляет знак "-" в выходную строку в том случае, если третье число в стеке отрицательное;
    слово HOLD вставляет в текущую позицию любой символ, значение которого (в коде ASCII) находится в стеке.


Но из этого описания далеко не очевидно, что конструкции S>D можно вкладывать одну в другую.
Опять же чистой вложенности нет, так как ограничителей форматирования лишь одна пара.
А эксперимет в в консоли показал, что слово S>D работает и без ограничителей форматирования. Только не понятно, что оно делает. Из пустого стека просто ноль рожает.
Так что, логика работы и возможности этой конструкции еще не очень понятны.

Но за пример спасибо! Узнал ещё немного новых заклинаний :)
Burunduk
 
Posts: 73
Joined: Thu, 03 Oct 2013, 06:57

Re: Поиск дочернего окна

Postby VoidVolker » Fri, 22 Nov 2013, 23:15

конструкции S>D

А эксперимет в в консоли показал, что слово S>D работает и без ограничителей форматирования. Только не понятно, что оно делает. Из пустого стека просто ноль рожает.

Это не конструкция — это слово. И оно преобразует число одинарной длины в число двойной длины. А по факту просто кладет на вершину стека ноль.
Code: Select all
S>D .
0  Ok

Просто слово <# требует на вход число двойной длины, сбрасывает текущую позицию в буфере преобразования чисел и подготавливает число к преобразованию в строку (если необходимо, зависит от конкретной реализации). Поэтому мы начинаем форматирование числа, далее получаем нужное число символов словом #, затем просто выкидываем остаток числа и конвертируем следующее число со стека. Соответственно в конце слово #> выкидывает со стека остаток и вычисляет размер получившейся строки и возвращает её на стек. Да, кстати, преобразование числа идет с конца.
Есть еще полезное слов HOLDS - вставляет строку в буфер.
95% вопросов уже обсуждались на форуме или ответы на них есть в мануале.        nnCron 1.93 b15.exe
Как правильно задавать вопросы.
User avatar
VoidVolker
Site Admin
 
Posts: 2898
Joined: Tue, 25 Apr 2006, 17:56

Previous

Return to nnCron forum (Russian)

Who is online

Users browsing this forum: No registered users and 6 guests

cron