Ru-Board.club
← Вернуться в раздел «Программы»

» nnCron-Планировщик с поддержкой скриптового языка

Автор: Stygis
Дата сообщения: 26.10.2006 14:26
unreal666

Код: MOUSE-POS <# S>D #S BL HOLD 2DROP S>D #S #>
Автор: unreal666
Дата сообщения: 26.10.2006 15:52

Цитата:
HOLD - кладет на стек как раз символ с этим кодом.

Так мне не нужно ложить на стек. Положить ничего трудного нету.
Я незнаю как ЗАПИСАТЬ в файл это число как байт.

Мне это вообще для чего нужно.
Спросто у меня на одном разделе слетела FAT (выклился свет во время создания еще одного раздела из свободного места данного раздела).
Ну и вычислил (тоже с помощью nnCron), что записи в FAT стали для 16-ти секторных кластеров (была 32-х секторная). Хотя ссылки в самих каталогах как были 32-х секторные так и остались.
Теперь мне надо взять число (копия FAT у меня хранится в текстовом виде) в в иде текста, преобразовать его в нормальное число (S>NUM), пересчить это значение обратно для 32-х секторного FAT. И запись это число как HEX-значение.
Для примера, после пересчета у меня получилось число 0x12FACD56 и мне надо его так и запись в файл как HEX значение.
Автор: Stygis
Дата сообщения: 26.10.2006 16:27
unreal666
По коду символа кладешь на стек и затем скидываешь в файл?
Автор: unreal666
Дата сообщения: 26.10.2006 18:26

Цитата:
По коду символа кладешь на стек и затем скидываешь в файл?

Вот как раз скинуть в файл не могу, т.к. не знаю как записать именно бинарное значение 0x12FACD56, а не в виде обычного текста.
А вообще да. Нужно каждое число типа 0xFF скидывать в файл как байт.

Но. Уже не надо. Нашел как это организовать в описании pdf-файла "Новая книга по Форту". В ней описано как сохранять код для целевой компиляции. Я ее под себя переделал.
Оказывается все просто. Просто сохраняешь ти данные в массиве и потом скидываешь этот массив в файл через WRITE-FILE.
Ништяк. Все сложное просто
Автор: Stygis
Дата сообщения: 26.10.2006 21:49
unreal666
Так ты кодик приведи задачки, интересно же
ЗЫ. Что за книжка такая?
Автор: unreal666
Дата сообщения: 27.10.2006 05:55

Цитата:
Так ты кодик приведи задачки, интересно же

Пока приводить нечего. Я ее еще не составил. Составил только момент, связанный с сохранением. Сйечас пока другим занимаюсь (привожу в нормальный вид doc-файл, который ты мне скидывал - перевод Стандарта ANS Forth).

Цитата:
ЗЫ. Что за книжка такая?

Там обо всем понемногу. Есть несколько интересных моментов. Описание нашел на форуме по Forth. Сходи туда ( http://fforum.winglion.ru/ ), там тоже есть интересные мысли связанные с фортом.
Книга находится здесь. Смотри там pdf-файл. Хотя лучше скачай страницы в HTML-формате и сам создай PDF, т.к. в его pdf почему-то нет картинок.

Добавлено:
Вот код, отвечающий за целевую компиляцию в этой книге:

Код: 0x10000 CONSTANT Msz
CREATE M Msz ALLOT
0 VALUE THERE
: b, ( byte -- ) THERE M + C! THERE 1 + TO THERE ; \ скомпилировать байт
: w, ( word -- ) THERE M + W! THERE 2 + TO THERE ; \ скомпилировать слово
: d, ( dword -- ) THERE M + ! THERE 4 + TO THERE ; \ скомпилировать 32-битное слово

: save" \ program.bin"
[CHAR] " WORD COUNT W/O OPEN-FILE DROP
M THERE ROT WRITE-FILE DROP ;
Автор: unreal666
Дата сообщения: 27.10.2006 07:56
Нашел тут одну неточность в справке nnCron:

Цитата:
Стоит особо отметить, что длина строк, созданных с помощью синтаксиса S" xxx" не может превышать 255 символов.

Длина строки не может превышать 511 байт. Походу длина строки содержить не один байт, а половину ячейки, т.к. для 32-битных систем - 2 байта.

Добавлено:
Блин. Чего-то не пойму как посмотреть содержимое (DUMP) такой строки.
Пытаюст сделать так:

Код: 6666 N>S DROP 15 - 100 DUMP
Автор: DJ makrus
Дата сообщения: 27.10.2006 08:13
unreal666

Цитата:
Не хочу я создавать лишние слова. Надо как-то по другому придумать.
вот еще [more=вариант]
Код:
#( Test_until_exit
NoActive
Action:
BEGIN
TMSG: "Внутри цикла!" 15
WIN-EXIST: "nnCron Help"
0 OR
PAUSE: 5000
UNTIL
TMSG: "Вышли из цикла, но внутри задачи!" 15
)#
Автор: unreal666
Дата сообщения: 27.10.2006 16:52
DJ makrus
Тоже не вариант. При таком варианте надо пройти цикл до конца. А мне надо, чтобы можно было из него выйти в любое время без прохождения оставшейся части цикла.
Автор: Stygis
Дата сообщения: 27.10.2006 17:55
unreal666

Цитата:
Так выводится одна и та же фигня, вне зависимости от начального числа.

Блин, я щас дико торможу и поэтому не могу сказать, почему, но этак команда выводит у тебя дамп с адреса PAD+длина(число->строка). PAD что такое помнишь?

Добавлено:
И вообще..

Цитата:
1111 N>S DROP 4 - 16 DUMP
30F1088 35 33 30 46 31 30 33 33 7F 00 00 01 00 00 00 00 530F1070........

Т.е. не соответствует код и символ.
Помню уже мучался с чем-то подобным. Но не помню, как решил....
Автор: unreal666
Дата сообщения: 27.10.2006 21:22

Цитата:
Блин, я щас дико торможу и поэтому не могу сказать, почему, но этак команда выводит у тебя дамп с адреса PAD+длина(число->строка). PAD что такое помнишь?

Да это понятно, что эта фигня находится в PAD. Только почему же в этом Паде нет этой строки?
По 6666 N>S TYPE она же выводится.

Цитата:
Т.е. не соответствует код и символ.

Аналогично. Только у меня в коде 34 34, а выводит тоже 70.
7-ка вообще имеет код 37.
Автор: Stygis
Дата сообщения: 27.10.2006 21:40
unreal666

Цитата:
Только почему же в этом Паде нет этой строки?

Ну ведь после S" tmp" в PAD тоже нету строчки tmp. Там должен лежать код строчки. Вот только я щас не могу понять, что из того, что там выведено является кодом... и является ли?
Автор: unreal666
Дата сообщения: 27.10.2006 22:22
Stygis

Цитата:
Там должен лежать код строчки.

Почему?

Цитата:
1) Символьная строка (au-cтрока):
Это самый распространенный тип строк, используемых в SP-Forth. Такая строка представлена двумя значениями на стеке: адресом памяти, по которому хранится сама строка ( a -- ) и т. н. счетчиком, в котором содержится длина (количество символов) данной строки ( a u -- ).

Т.е. по идее по этому адресу должна быть строка. Просто, возможно, после применения остальных команд (после N>S), эта строка в PAD'е затирается.
Автор: Stygis
Дата сообщения: 27.10.2006 22:24
unreal666
У меня уже пальцы и мозги запутались - я как раз имел в виду, что там должен лежать как раз адрес
Автор: unreal666
Дата сообщения: 27.10.2006 22:25

Цитата:
Ну ведь после S" tmp" в PAD тоже нету строчки tmp.

После S" tmp" DROP 10 - 50 DUMP в памяти лежит код S" tmp" DROP 10 - 50 DUMP

Добавлено:
Еще что интересно.
После применения S" 123" адрес строки получается 97032E7, а после 123 N>S - 9702ED5.
Чего то они слишком в разных местах и довольно далеко друг от друга отстоят.
Автор: DJ makrus
Дата сообщения: 28.10.2006 01:57
unreal666

Цитата:
Тоже не вариант.
да нет, и это тоже вариант, простой и очень гибкий (вовсе не обязательно проходить весь цикл до конца ), другое дело что он тебя почему-то не устраивает..., если найдешь свой вариант - будь добр поделись идеей .
Автор: unreal666
Дата сообщения: 28.10.2006 04:39

Цитата:
вовсе не обязательно проходить весь цикл до конца

Я в смысле, что все равно придется проходить все до UNTIL, т.е. нельзя выйти в любом месте из цикла.
Автор: DJ makrus
Дата сообщения: 28.10.2006 07:18
unreal666
я тебя прекрасно понял, посмотри вот на этот [more=вариант]
Код:
#( Test_until_exit
NoActive
Action:
BEGIN
TMSG: "Внутри цикла!" 15
WIN-EXIST: "nnCron Help" DUP
IF
TMSG: "Мы перескакиваем все оставшиееся до UNTIL" 15
ELSE
TMSG: "Делаем что-то полезное №1" 15
TMSG: "Делаем что-то полезное №2" 15
TMSG: "Делаем что-то полезное №3" 15
THEN
0 OR
PAUSE: 5000
UNTIL
TMSG: "Вышли из цикла, но внутри задачи!" 15
)#
Автор: rrr777
Дата сообщения: 28.10.2006 12:32
Первый раз в этой теме и тут вопрос возник у всех nnCron с оперой конфликтует, у меня при его работе Опера виснет наглухо, очень жаль ни без того ни без другого существовать ни охото, но вс-таки пришлось сервис отключить
Автор: lucky_Luk
Дата сообщения: 28.10.2006 21:52
rrr777

Цитата:
Опера виснет наглухо, очень жаль ни без того ни без другого существовать ни охото, но вс-таки пришлось сервис отключить

А если юзать сабж не как сервис, а как приложение?
Автор: daMIR
Дата сообщения: 28.10.2006 22:07

Цитата:
А если юзать сабж не как сервис, а как приложение?

А у меня это вариант не покатил (когда пытался кинуть в атвозагрузку каждого юзера, чтоб Крон у всех работал).
Кто-нибудь использвал Крон в таком виде?
Автор: DJ makrus
Дата сообщения: 29.10.2006 07:15
rrr777

Цитата:
...у всех nnCron с оперой конфликтует...
а если его запустить в первоначальном виде с отключением всех добавленных плагинов и кронтабов, или вообще всех плагинов..., попробуй выявить причину , и какая версия nnCron'а?
Автор: Korros
Дата сообщения: 29.10.2006 14:55
Подскажите как можно из скрипта проверить существует ли процесс? Желательно на jscript.
Автор: daMIR
Дата сообщения: 29.10.2006 17:16
Korros
А чем тебе не подходит PROC-EXIST: "proc_pattern"?

Цитата:

Возвращает флаг TRUE (-1), если процесс, подпадающий под маску существует. В качестве аргумента к слову PROC-EXIST: обычно используется имя исполняемого файла, который запускает процесс.


Автор: AnxiousPretzel
Дата сообщения: 30.10.2006 13:22
#( Test
NoActive
AsLoggedUser
VARIABLE i
Action:
10 1 DO
I i !
FT-CUR FILE-WTIME: "\\Agent0%i @%\rec_agent0%i @%" FTIME- 36000 >
IF
TMSG: "Folder was not changed!" 5
ELSE
TMSG: "Folder was changed!" 5
THEN
LOOP
)#


Кто подскажет, в чем проблема nncron ругается, что не может найти сетевой путь... С локальными папками все работает, а вот с сетевыми...
Может FILE-WTIME с сетевыми ресурсами работать не хочет...
Автор: Stygis
Дата сообщения: 30.10.2006 15:15
AnxiousPretzel
Попробуй для начала проверь эту строчку:

Код: FILE-WTIME: "\\Agent0%i @%\rec_agent0%i @%"
Автор: AnxiousPretzel
Дата сообщения: 30.10.2006 16:58
Пробывал - нет разницы. Все то же сообщение.
Автор: Stygis
Дата сообщения: 30.10.2006 17:42
AnxiousPretzel
Попробуй примонтируй одну папку и попробуй так.
Но вообще у меня нормально отрабатывает. Правда я через сеть обращался к своему компу (нету других жертв )
Автор: Korros
Дата сообщения: 30.10.2006 19:50
А как можно использовать внутри <JScript> ... </SCRIPT> слова из форта например PROC-EXIST: "proc_pattern" и HINT: "hint_text".

Знаю что сообщения можно показывать с помощью WshShell.Run("tm.exe TimeHint 5 text");, есть более простые варианты?
Автор: Stygis
Дата сообщения: 30.10.2006 20:00
Korros
Внутри скрипта разве что попробовать опять же через tm.exe (сам не пробовал).
Вообще такое, подозреваю, не планировалось

Страницы: 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566

Предыдущая тема: Как писать кириллицей, а НЕ латиницей (транслитом)


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.