Forth http://www.fforum.winglion.ru/ |
|
ограничения в содержимом au-строки определяемой через S" http://www.fforum.winglion.ru/viewtopic.php?f=20&t=2204 |
Страница 1 из 1 |
Автор: | makrus [ Чт июл 16, 2009 10:35 ] |
Заголовок сообщения: | ограничения в содержимом au-строки определяемой через S" |
Сталкнулся со следующей непонятной для меня ситуацией: есть простая вроде бы задачка (упростил как мог) Код: #( CLASSIC-TASK-#-Test Первая и последнии au-строки - для контроля работы задачки, а вот вторая..., вообще-то это был html-код, который я как смог заменил на "блаблабла" , возможно и еще есть возможность часть этой строки вырезать/заменить, но перебирать все возможные комбинации - нет времени...
\ зацикливание \ NoActive WatchHotKey: "^t" Action: TRAY-REFRESH S" Начали" MsgBox S" блабл='left' блабл='блаб_блабл'><b>блабл бл блаб блабла бла б блаблабл:<бл />1. Блабла блаблаб блаблабл блаблаб б блабла бла блабл б блабл(блаблабл бла блаблабл блаблабл блаблабла)бла блаб блаблаблаб блаб блаблаб б блабла<бл />3. БЛаб блаблаблаб блабл</b></td>" 2DROP S" Закончили" MsgBox )# Так вот в таком состоянии эта задача при запуске зацикливается на выводе первого окошка, остановить можно только рестартом nnCron'а. В результате манипуляций с содержимым второй au-строки можно добиться: - нормальной работы задачи - последовательное появление двух окошек и выход из задачи; - завершение с ошибкой, например "Внутренняя ошибка. Error # -1073741819"; - падение nnCron'а с последующий перезапуском благодаря гуарду... Проверял с дефолтным nncron.ini и этой единственной добавленной задачей, на XP SP2 c последним релизом nnCron'а от 2006 года Я уже второй день пытаюсь выяснить причину такого "нелогичного" для меня поведения nnCron'а, но уже не знаю куда копать... самое вероятное что мне приходит в голову, так это то, что в этой строке есть иммэдиейт слово которое "ломает" парсинг этой строки до закрывающей кавычки, но что-то я его тут "в упор не вижу" ... Так вот прошу: 1. проверьте у себя эту задачу - проблема в этой строке или у меня в компе? 2. если проблем в строке, то в чем именно? |
Автор: | Ilya [ Чт июл 16, 2009 10:58 ] |
Заголовок сообщения: | Re: ограничения в содержимом au-строки определяемой через S& |
makrus писал(а): Я уже второй день пытаюсь выяснить причину такого "нелогичного" для меня поведения nnCron'а, но уже не знаю куда копать... самое вероятное что мне приходит в голову, так это то, что в этой строке есть иммэдиейт слово которое "ломает" парсинг этой строки до закрывающей кавычки, но что-то я его тут "в упор не вижу" ...
Так вот прошу: 1. проверьте у себя эту задачу - проблема в этой строке или у меня в компе? 2. если проблем в строке, то в чем именно? А ты в курсе, что твоя строка весит 260 байт? Стандартные счётные строки должны быть не более 255 байт! Для длинных строк есть 0-строки! |
Автор: | VoidVolker [ Чт июл 16, 2009 11:15 ] |
Заголовок сообщения: | |
Помошь>Дополнительная информация>Решение возникающих проблем>13. Накладывает ли nnCron какие-то ограничения на размер кронтаба, длину строки в кронтабе, общее количество задач? Цитата: Фактическое ограничение только одно: длина одной строки в кронтабе не должна превышать 512 символов. Но на самом деле строки больше 255 символов все равно вызывают ошибки. Поэтому большие тексты лучше подгружать из отдельных файлов. Ilya писал(а): Стандартные счётные строки должны быть не более 255 байт!
Для длинных строк есть 0-строки! Это утверждение верно только для строк с однобайтным счетчиком в начале строки, вида C" текст". К строкам вида S" текст" оно не применимо, т.к. счетчик в таких строках является отдельным 4-х байтным числом. |
Автор: | mOleg [ Чт июл 16, 2009 11:25 ] |
Заголовок сообщения: | |
попробуйте сделать более короткую строку, или, даже, обойтись без нее в начале. Если все будет нормально. Удлиняйте по-тихоньку я так понимаю, S" в nncron занимается форматным преобразованием? если нет, то весь текст от S" bla bla ... " до завершающей кавычки должен располагаться в одной строке! |
Автор: | VoidVolker [ Чт июл 16, 2009 11:32 ] |
Заголовок сообщения: | |
mOleg писал(а): я так понимаю, S" в nncron занимается форматным преобразованием?
Нет, не занимается, обычные строки. Форматное преобразование осуществляется таким образом: Код: S" текст%любой код, возвращающий число или a u строку%еще текст" EVAL-SUBST
|
Автор: | makrus [ Чт июл 16, 2009 16:18 ] |
Заголовок сообщения: | |
Ilya Цитата: А ты в курсе, что твоя строка весит 260 байт? угу, а в оригинале еще больше. Да ты прав, слишком большая строка..., самое обидное что я вчера и эту версию проверял (это я точно помню), но nnCron, видимо, так же падал и я стал искать дальше, наверное все-таки подсунул строку длинее 255, а как верно сказал VoidVolker Цитата: ...на самом деле строки больше 255 символов все равно вызывают ошибки
Всем спасибо, как всегда "ларчик просто открывался" |
Автор: | VoidVolker [ Чт июл 16, 2009 16:37 ] |
Заголовок сообщения: | |
makrus Кстати, я для генерации простых хтмл из кронтаба делаю так: Код: \ # Компиляция тегов как строковых литералов : TEG? ( a u -- ? ) DROP C@ [CHAR] < = ; : DO-TEG ( a u -- ) 2DUP S" >" SEARCH 0= NIP NIP \ Проверяем наличие закрывающего символа в найденом слове IF S" " S+ [CHAR] > PARSE 1+ S+ \ Если нету - дописываем пробел и парсим до закрывающего символа THEN [COMPILE] SLITERAL POSTPONE S+ ; WARNING @ WARNING OFF : NOTFOUND ( a u -- ) 2DUP 2>R ['] NOTFOUND CATCH IF 2DROP 2R@ TEG? IF 2R@ DO-TEG ELSE -2003 THROW THEN THEN RDROP RDROP ; WARNING ! А потом вот так: Код: <teg someparam="nnn" elseparam="m"> TYPE CR </teg> TYPE CR
|
Автор: | makrus [ Пт июл 17, 2009 08:12 ] |
Заголовок сообщения: | |
VoidVolker Цитата: для генерации простых хтмл из кронтаба делаю так сам код я вроде понял, но никак с наскоку не соображу конечная цель какая? Представить кронтаб в виде html-файла окружив Слова тегами?
|
Автор: | VoidVolker [ Пт июл 17, 2009 14:13 ] |
Заголовок сообщения: | |
makrus писал(а): сам код я вроде понял, но никак с наскоку не соображу конечная цель какая? Представить кронтаб в виде html-файла окружив Слова тегами?
Да это же обыкновенное упрощение синтаксиса создания хтмл-кода, сравни: Код: S" <teg someparam=" QUOTE S+ S" nnn" S+ QUOTE S+ S" elseparam=" S+ QUOTE S+ S" m" S+ QUOTE S+ S" >" S+ TYPE CR S" </teg>" TYPE CR и Код: <teg someparam="nnn" elseparam="m"> TYPE CR </teg> TYPE CR
Т.е. вместо сложения кучи строк, получаем пару понятных и простых строк, сразу видно - где хтмл, а где данные. |
Страница 1 из 1 | Часовой пояс: UTC + 3 часа [ Летнее время ] |
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group http://www.phpbb.com/ |