Console



Console - средство интерактивного общения с nnCron для тех кто знает язык Форт и незаменимый помощник для всех, кто только начинает изучение этого языка. Работая с консолью, вы можете использовать все слова Форта, создавать определения и выполнять их и т. д. Но будьте осторожны - Форт позволяет сделать многое, а потому очень уязвим.

Чтобы запустить консоль, щелкните правой кнопкой мыши на иконке nnCron в трее и выберите пункт меню "Инструменты - Console" (Tools - Console). Консоль можно запустить и из командной строки.

Консоль можно автоматически запускать прямо при старте nnCron. Для этого в настройках nnCron надо поставить "галочку" в пункте "Открывать консоль при старте" (двойной щелчок на иконке nnCron в системном трее, вкладка "Интерфейс").

Чтобы завершить сессию работы с консолью, введите в ней:

BYE

и нажмите ENTER или просто воспользуйтесь кнопкой Закрыть ("крестик") в правом верхнем углу консоли.

Консоль nnCron "запоминает" введенные ранее команды и позволяет управлять списком этих команд с помощью заранее определенных клавиш. Например, клавиша F7 выводит на экран список введенных ранее команд. Клавиша стрелка вверх выводит предыдущую команду из списка, стрелка вниз - следующую команду и т. д. Полный список клавиш, с помощью которых можно управлять историей команд, вы можете посмотреть в описании команды doskey в документации вашей операционной системы.


Удаленная консоль

Начиная с версии nnCron 1.88, можно пользоваться консолью даже с удаленных машин. Для этого nnCron при старте запускает сервер Remote Console, поведение которого настраивается с помощью переменных nncron.ini

После того, как вы убедились, что имеете право подключаться с указанного адреса и знаете порт, к которому нужно подключаться, запускайте telnet и вводите команду:

open <ip_address> <port>

например:

open 127.0.0.1 2002

В результате вы запустите удаленную консольную сессию, которая ничем не отличается от локальной сессии.

Управлять отображением консоли можно и программно. Слова:

CONSOLE - создает консольное окошко
START-QUIT - запускает слово QUIT в отдельном thread'e
QUIT - если консоль уже открыта

можно использовать в крон-скриптах, запускаемых с помощью ключа командной строки -runfile.

Пример:

: main
    CONSOLE
    ." Hello, World!" CR
    ." Press any key..." KEY DROP
;

Работая с форт-консолью не забывайте, что большинство предопределенных префиксных слов в nnCron предназначены для периода компиляции, а не периода исполнения. Компиляция каждой задачи автоматически происходит в момент перечитывания кронтаба. Значит, такие слова можно компилировать, но нельзя исполнять в форт-консоли. Вот несложный пример. Введите в форт-консоли строку

MSG: "test"

и нажмите ENTER. Если вы ожидаете, что на экране появится сообщение test, то вы ошибаетесь - ведь мы использовали слово MSG: в периоде исполнения, а не в периоде компиляции.

А вот если прямо в консоли составить новое слово:

: test_message MSG: "test" ;

нажать ENTER и теперь выполнить это слово:

test_message 

то на экране появится искомое сообщение test. Почему? Да потому, что нажав ENTER после определения нового слова, мы его скомпилировали, т. е. использовали слово MSG: только в момент компиляции.

Помимо этого, в консоли можно воспользоваться аналогом слова MSG: с постфиксным расположением параметров:

S" test" MsgBox

Большинство предопределенных префиксных слов nnCron имеют аналоги с постфиксным расположением параметров, которые можно выполнять в консоли.


Локальная консоль

Для корректной работы консоли nnCron необходим установленный протокол TCP-IP. Если вы работаете на системе, где этот протокол не установлен, то вместо стандартной консоли nnCron вы можете воспользоваться т. н. локальной консолью. Для этого установите значение переменной nncron.ini RemConsole следующим образом:

RemConsole OFF

и вместо стандартной консоли nnCron будет вызываться локальная консоль. Единственное ограничение при работе с локальной консолью - ее нельзя закрывать при помощи "крестика" (кнопки "Закрыть") в правом верхнем углу консоли.

Для того, чтобы закрыть окно консоли, введите в ней (в нижнем регистре):

bye

и нажмите ENTER.

Не выходите из консоли, кликая на крестике в правом верхнем углу окна - так вы просто напросто завершаете работу nnCron!


Несколько полезных слов для работы с консолью:


. (точка)

Забирает верхнее значение со стека и выводит его на консоль.

Примеры:

\ выводим на консоль результат проверки: наличествует ли файл?
FILE-EXIST: "c:\xxx\test.sem"
. CR
\ выводим на консоль результат сложения
2 3 + . CR

.S

Выводит все содержимое стека, не разрушая его, т. е. оставляя нетронутым прежнее состояние стека

Пример:

\ помещаем числа на стек и выводим их на консоль
1 2 3 4 5 6 7 8 9 0 .S

ABRACADABRA

Очищает стек. На самом деле, для того, чтобы очистить стек нужно ввести в консоли любое несуществующее слово, в том числе и ABRACADABRA, и CLEAR_DA_STACK и даже просто qwefdawdflk. :)

Пример:

\ помещаем числа на стек
1 2 3
\ очищаем стек
shg

Можно определить и специальное слово для очистки стека. Назовем его 0SP.

: 0SP BEGIN DEPTH WHILE DROP REPEAT ;

Слово DEPTH возвращает количество элементов на стеке. Мы в цикле выполняем слово DROP, пока DEPTH не вернет 0 (это означает, что стек уже пуст).

Поместите это определение, например, в плагин tools.spf и слово 0SP всегда будет в вашем распоряжении.


."

Из работающей задачи выводит на консоль текстовую строку, ограниченную еще одной завершающей кавычкой.

Примеры:

#( test_debug
NoActive
Action:
    ." Test string." CR
    ." Debug message." CR
)#

Следующая конструкция позволяет выводить на консоль строки, содержащие предопределенные переменные nnCron:

\ выводит на консоль 'Hello, имя_текущего_пользователя!"
S" Hello, %USERNAME%!" EVAL-SUBST TYPE
\ выводит на консоль заголовок активного окна
S" Заголовок активного окна: %ACTIVE-WINDOW%" EVAL-SUBST TYPE

CR

Печатает на консоли перевод строки.

Пример:

." First string" CR ." Second string" CR

BYE

Закрывает консоль, не закрывая при этом nnCron.

Для того, чтобы закрыть консоль введите в ней:

BYE

и нажмите ENTER.