Плагин: Автостроки [Обновление 20/03/2012 18:03]

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

Re: Плагин: Автостроки [обсуждение]

Postby VoidVolker » Wed, 30 Jun 2010, 14:33

Ап! Исправлена ошибка, из-за которой невозможно было использовать в режиме интерпретации две и более строки подряд. Теперь слова sliteral, cliteral и zliteral в режиме интерпретации помещают новую строку по старому адресу - т.е. меняют исходную строку.
95% вопросов уже обсуждались на форуме или ответы на них есть в мануале.        nnCron 1.93 b15.exe
Как правильно задавать вопросы.
User avatar
VoidVolker
Site Admin
 
Posts: 2898
Joined: Tue, 25 Apr 2006, 17:56

Re: Плагин: Автостроки [обсуждение]

Postby VoidVolker » Mon, 12 Dec 2011, 22:54

Ап! Добавлен сборщик мусора. Теперь можно не беспокоится за утечки памяти из-за создания временных строк во время работы плагина. После использования полученной строки, когда она уже не нужна, её тоже можно освободить словом LAS-FREE.
95% вопросов уже обсуждались на форуме или ответы на них есть в мануале.        nnCron 1.93 b15.exe
Как правильно задавать вопросы.
User avatar
VoidVolker
Site Admin
 
Posts: 2898
Joined: Tue, 25 Apr 2006, 17:56

Re: Плагин: Автостроки [обсуждение]

Postby VoidVolker » Wed, 14 Dec 2011, 17:48

Ап! Добавил сборщик мусора для слова S+. Теперь можно использовать сложение строк неограниченное количество раз без утечек памяти и в долго работающих задачах.
TRASH( ( -- ) Начать сбор мусора. Все строки, созданные словом S+ будут попадать в корзину. Для ручного добавления или извлечения адресов используйте слова TRASH! и TRASH@ (только адреса, выделенные словом ALLOCATE)
)TRASH ( -- ) Закончить сбор мусора. Все адреса, находящиеся в корзине будут освобождены. Слово S+ больше не будет добавлять адреса в корзину.
TRASH! ( addr -- ) Отправить адрес со стека в корзину. Только между слов TRASH( и )TRASH
TRASH@ ( -- addr ) Получить адрес из корзины. Только между слов TRASH( и )TRASH
Использовать примерно так:
Code: Select all
TRASH(
...
S+ S+ S+
...
100000 ALLOCATE THROW
DUP TRASH!
...
)TRASH
95% вопросов уже обсуждались на форуме или ответы на них есть в мануале.        nnCron 1.93 b15.exe
Как правильно задавать вопросы.
User avatar
VoidVolker
Site Admin
 
Posts: 2898
Joined: Tue, 25 Apr 2006, 17:56

Re: Плагин: Автостроки [обсуждение]

Postby VoidVolker » Sat, 14 Jan 2012, 10:34

Ап! Исправлена ошибка, приводящая при определенных условиях к искажению созданных строк. Убедительная просьба всем обновить плагин во избежание ошибок в данных.
Приношу свои извинения.
95% вопросов уже обсуждались на форуме или ответы на них есть в мануале.        nnCron 1.93 b15.exe
Как правильно задавать вопросы.
User avatar
VoidVolker
Site Admin
 
Posts: 2898
Joined: Tue, 25 Apr 2006, 17:56

Re: Плагин: Автостроки [Обновление 14/01/12-11:20]

Postby Morituruz » Sat, 14 Jan 2012, 15:01

О, дата в названии, добавлю тему в check.ini :).
Я вот насчёт мусора не понял, его всегда нужно использовать, когда пользуешься S+?
TRASH( " 1" " 2" " 3" S+ S+ mystring PLACE )TRASH
И ещё слово LAS-FREE кроме как в шапке нигде не нашёл. Хочу примеров вобщем.
User avatar
Morituruz
 
Posts: 725
Joined: Sun, 14 Oct 2007, 01:51

Re: Плагин: Автостроки [Обновление 14/01/2012 17:00]

Postby VoidVolker » Sat, 14 Jan 2012, 16:21

Ап! Дата в заголовке тему удобна? Тогда и в остальных темах про плагины сделаю так. Кстати, дату можно получить и из кода по строке Дата:.
Moriturus wrote:Я вот насчёт мусора не понял, его всегда нужно использовать, когда пользуешься S+?
Code: Select all
TRASH( " 1" " 2" " 3" S+ S+ mystring PLACE )TRASH

Не обязательно. Это для предотвращения утечек памяти. Актуально только для задач, выполняющихся длительное время и использующих сложение строк либо использующих сложение строк очень интенсивно. Так же полезно для ПК с маленьким объемом ОЗУ. Единственный минус - для этого используются дополнительные процессорные мощности, а с учетом современных скоростей и объема строк этим можно пренебречь.
Пример применения слова LAS-FREE:
Code: Select all
" Верхнее окно: %ACTIVE-WINDOW%|nЗаголовок окна: %USERNAME%" TYPE CR LAS-FREE

В данном случае строка разворачивается в следующий код:
Code: Select all
TRASH( S" Верхнее окно: " ACTIVE-WINDOW S+ CRLF S+ S" Заголовок окна: " S+ USERNAME S+ )ATRASH

Строки, созданные первым, вторым и третьим S+ были освобождены, а вот адрес строки последнего S+ был занесен в переменную. И слово LAS-FREE как раз этот адрес и освобождает.
95% вопросов уже обсуждались на форуме или ответы на них есть в мануале.        nnCron 1.93 b15.exe
Как правильно задавать вопросы.
User avatar
VoidVolker
Site Admin
 
Posts: 2898
Joined: Tue, 25 Apr 2006, 17:56

Re: Плагин: Автостроки [Обновление 14/01/2012 17:52]

Postby VoidVolker » Sat, 14 Jan 2012, 16:54

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

Re: Плагин: Автостроки [Обновление 14/01/2012 17:52]

Postby Morituruz » Tue, 17 Jan 2012, 20:43

Замена этого:
Code: Select all
      bln COUNT S" /%host_name%.+/i" EVAL-SUBST RE-ALL
         bln COUNT $0 S" %host_name%: %ping_time% ms, %ping_loss% %PERCENT%" EVAL-SUBST StringReplace bln PLACE
      ;RE-ALL


на это:
Code: Select all
      bln COUNT " /%host_name%.+/i" RE-ALL
         bln COUNT $0 " %host_name%: %ping_time% ms, %ping_loss% |p" StringReplace bln PLACE
      ;RE-ALL

почему-то не работает.
User avatar
Morituruz
 
Posts: 725
Joined: Sun, 14 Oct 2007, 01:51

Re: Плагин: Автостроки [Обновление 14/01/2012 17:52]

Postby VoidVolker » Tue, 17 Jan 2012, 22:12

А что выдают слова host_name, ping_time и ping_loss? Это должны быть только строки. Советую проверить, что именно выдает строка:
Code: Select all
" %host_name%: %ping_time% ms, %ping_loss% |p"
95% вопросов уже обсуждались на форуме или ответы на них есть в мануале.        nnCron 1.93 b15.exe
Как правильно задавать вопросы.
User avatar
VoidVolker
Site Admin
 
Posts: 2898
Joined: Tue, 25 Apr 2006, 17:56

Re: Плагин: Автостроки [Обновление 14/01/2012 17:52]

Postby Morituruz » Tue, 17 Jan 2012, 22:17

Вы как всегда правы, они возвращают числа, а надо строки :(
User avatar
Morituruz
 
Posts: 725
Joined: Sun, 14 Oct 2007, 01:51

Re: Плагин: Автостроки [Обновление 14/01/2012 17:52]

Postby VoidVolker » Tue, 17 Jan 2012, 22:39

Да, это единственное отличие от EVAl-SUBST в работе с подстроками. В описание это есть.
95% вопросов уже обсуждались на форуме или ответы на них есть в мануале.        nnCron 1.93 b15.exe
Как правильно задавать вопросы.
User avatar
VoidVolker
Site Admin
 
Posts: 2898
Joined: Tue, 25 Apr 2006, 17:56

Re: Плагин: Автостроки [Обновление 14/01/2012 17:52]

Postby SphinxST » Sun, 05 Feb 2012, 21:45

Посмотри плс, является ли следующее проблемой в автостроках.

Заголовок задачи:
Code: Select all

<%
   : OFFICE_LAPTOP_NAME             " SEMENT04" ;
%>

<%
   : IS_CURRENT_PC?   \ ( a u -- )
      " COMPUTERNAME" ENV COMPARE 0=
   ;
%>

<%
   : PRIVATE_DIR                         " C:\!ST" ;
   : DESKTOP_PRIV_DIR                     " z:\!ST" ;
%>

#( OFFICE_LAPTOP_Backup_Laptop_To_Desktop
   RunMissed
   LoadProfile
   Time: 0 7 * * 2 *
   STRING-LIST: bld_syncList
   Rule:
      " outlook.exe" PROC-EXIST? NOT
      " %PRIVATE_DIR%" EXIST? AND
      " %DESKTOP_PRIV_DIR% EXIST? AND
      " %OFFICE_LAPTOP_NAME%" IS_CURRENT_PC? AND
   Action:

Крон выдает ошибку
Code: Select all
20:41:04 3080 ST OFFICE_LAPTOP_Backup_Laptop_To_Desktop: Rule: stack error.

При комментировании RULE в правиле выше ошибка пропадает.
SphinxST
 
Posts: 18
Joined: Thu, 17 Nov 2011, 12:27

Re: Плагин: Автостроки [Обновление 14/01/2012 17:52]

Postby Morituruz » Sun, 05 Feb 2012, 22:04

SphinxST wrote: " outlook.exe" PROC-EXIST? NOT
" %PRIVATE_DIR%" EXIST? AND
" %DESKTOP_PRIV_DIR%" EXIST? AND
" %OFFICE_LAPTOP_NAME%" IS_CURRENT_PC? AND ;

При комментировании RULE в правиле выше ошибка пропадает.



Да и как-то много лишнего, так вроде тоже должно работать:
Code: Select all

<%
   : OFFICE_LAPTOP_NAME             " SEMENT04" ;
   : IS_CURRENT_PC?   \ ( a u -- )
      " COMPUTERNAME" ENV COMPARE 0=
   ;
   : PRIVATE_DIR                         " C:\!ST" ;
   : DESKTOP_PRIV_DIR                     " z:\!ST" ;
%>

#( OFFICE_LAPTOP_Backup_Laptop_To_Desktop
   RunMissed
   LoadProfile
   Time: 0 7 * * 2 *
   STRING-LIST: bld_syncList
   Rule:
      " outlook.exe" PROC-EXIST? NOT
      PRIVATE_DIR EXIST? AND
      DESKTOP_PRIV_DIR EXIST? AND
      OFFICE_LAPTOP_NAME IS_CURRENT_PC? AND ;
   Action:
User avatar
Morituruz
 
Posts: 725
Joined: Sun, 14 Oct 2007, 01:51

Re: Плагин: Автостроки [Обновление 14/01/2012 17:52]

Postby VoidVolker » Sun, 05 Feb 2012, 22:16

Если в строке только переменная, то делать вот так:
Code: Select all
" %PRIVATE_DIR%"

нет необходимости. Незачем помещать текстовую переменную в строку, в которой больше ничего нет.
Надо так:
Code: Select all
PRIVATE_DIR

Где слово )# окончания задачи?
Еще можно попробовать вот так:
Code: Select all
...
Rule:
      " outlook.exe" PROC-EXIST? NOT
      PRIVATE_DIR EXIST? AND
      DESKTOP_PRIV_DIR EXIST? AND
      OFFICE_LAPTOP_NAME IS_CURRENT_PC? AND ;
Action:
...

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

Re: Плагин: Автостроки [Обновление 14/01/2012 17:52]

Postby SphinxST » Sun, 05 Feb 2012, 22:29

Да, спасибо. Если не считать избыточности кода (с потерей производительности конечно), есть какие-то еще проблемы в такой записи " %VAR%" ?
SphinxST
 
Posts: 18
Joined: Thu, 17 Nov 2011, 12:27

PreviousNext

Return to nnCron forum (Russian)

Who is online

Users browsing this forum: Google [Bot] and 6 guests

cron