помогите написать малюсенькую задачу на форте.

Модератор: Модераторы разделов

Sleeping Daemon
Сообщения: 1450

помогите написать малюсенькую задачу на форте.

Сообщение Sleeping Daemon »

Помогите сделать пожалуйста.
Нужно сравнить 2 файла по crc32 и если контрольные суммы равны, то выполнить одно действие, если нет - другое.
У меня есть пример, но он как то отдален от того, чего мне нужно.
Это нужно для программы nncron.
Подключается плагин crc32.spf
#( crc_test
NoActive
Action:
\ printing 'test.txt' crc32 to console:
S" c:\temp\test.txt" GET-CRC32 TYPE CR
\ displaying 'test.txt' crc32 in a message:
S" c:\temp\test.txt" GET-CRC32 S>ZALLOC ASCIIZ> MsgBox
)#
Есть второй пример который я вообще не понял.
#( crc_test1
\ running action if file CRC32 was changed
fVAR file1crc
Rule:
S" c:\temp\test.txt" GET-CRC32 2DUP
file1crc COMPARE
IF TO file1crc TRUE
ELSE 2DROP FALSE
THEN
Action:
MSG: "File was changed"
)#
Спасибо сказали:
agreed
Сообщения: 143
ОС: Fedora 10, Mac OS X 10.5

Re: помогите написать малюсенькую задачу на форте.

Сообщение agreed »

Есть второй пример который я вообще не понял.
#( crc_test1
\ running action if file CRC32 was changed
fVAR file1crc
Rule:
S" c:\temp\test.txt" GET-CRC32 2DUP
file1crc COMPARE
IF TO file1crc TRUE
ELSE 2DROP FALSE
THEN
Action:
MSG: "File was changed"
)#


Здесь семантика TO немного отличается от стандартной. В file1crc, судя по всему, она запихивает пару значений ( addr len ) - crc32 заданного файла и кладет на стек TRUE, тогда отрабатывает Action:. Иначе, crc дропается и Action: не выполняется.
Попробую изобразить, что нужно тебе:
#( crc_compare
\ здесь нужные тебе параметры
Rule:
S" file1.xxx" GET-CRC32 S" file2.xxx" GET-CRC32 \ получаем две строки с црц вида ( addr len )
COMPARE IF \ если равны
\ одно действие
ELSE \ если не равны
\ другое действие
THEN
)#


С точки зрения форта - правильно. С точки зрения nncron - не уверен, там ли расположил слова. Давненько не глядел его.

p.s.: Ура! Фортеры появились на линуксфоруме! :)
Спасибо сказали:
Sleeping Daemon
Сообщения: 1450

Re: помогите написать малюсенькую задачу на форте.

Сообщение Sleeping Daemon »

agreed писал(а):
23.03.2006 18:31
Есть второй пример который я вообще не понял.
#( crc_test1
\ running action if file CRC32 was changed
fVAR file1crc
Rule:
S" c:\temp\test.txt" GET-CRC32 2DUP
file1crc COMPARE
IF TO file1crc TRUE
ELSE 2DROP FALSE
THEN
Action:
MSG: "File was changed"
)#


Здесь семантика TO немного отличается от стандартной. В file1crc, судя по всему, она запихивает пару значений ( addr len ) - crc32 заданного файла и кладет на стек TRUE, тогда отрабатывает Action:. Иначе, crc дропается и Action: не выполняется.
Попробую изобразить, что нужно тебе:
#( crc_compare
\ здесь нужные тебе параметры
Rule:
S" file1.xxx" GET-CRC32 S" file2.xxx" GET-CRC32 \ получаем две строки с црц вида ( addr len )
COMPARE IF \ если равны
\ одно действие
ELSE \ если не равны
\ другое действие
THEN
)#


С точки зрения форта - правильно. С точки зрения nncron - не уверен, там ли расположил слова. Давненько не глядел его.

p.s.: Ура! Фортеры появились на линуксфоруме! :)

Вряд ли появились. Это видимо толкько один эпизод. Хотя может и появятся, если только NN напишет свой nncron под Linux. Но вряд ли.
Ладно, вернёмся к нашим баранам...
Не работет, то есть при равных и различных crc32 на файлах результат один и тот же.
P.S. На фидошном форуме по nncron'у то же не могут дать работающего примера.
Спасибо сказали:
Sleeping Daemon
Сообщения: 1450

Re: помогите написать малюсенькую задачу на форте.

Сообщение Sleeping Daemon »

Sleeping Daemon писал(а):
24.03.2006 07:54
agreed писал(а):
23.03.2006 18:31

Есть второй пример который я вообще не понял.
#( crc_test1
\ running action if file CRC32 was changed
fVAR file1crc
Rule:
S" c:\temp\test.txt" GET-CRC32 2DUP
file1crc COMPARE
IF TO file1crc TRUE
ELSE 2DROP FALSE
THEN
Action:
MSG: "File was changed"
)#


Здесь семантика TO немного отличается от стандартной. В file1crc, судя по всему, она запихивает пару значений ( addr len ) - crc32 заданного файла и кладет на стек TRUE, тогда отрабатывает Action:. Иначе, crc дропается и Action: не выполняется.
Попробую изобразить, что нужно тебе:
#( crc_compare
\ здесь нужные тебе параметры
Rule:
S" file1.xxx" GET-CRC32 S" file2.xxx" GET-CRC32 \ получаем две строки с црц вида ( addr len )
COMPARE IF \ если равны
\ одно действие
ELSE \ если не равны
\ другое действие
THEN
)#


С точки зрения форта - правильно. С точки зрения nncron - не уверен, там ли расположил слова. Давненько не глядел его.

p.s.: Ура! Фортеры появились на линуксфоруме! :)

Вряд ли появились. Это видимо толкько один эпизод. Хотя может и появятся, если только NN напишет свой nncron под Linux. Но вряд ли.
Ладно, вернёмся к нашим баранам...
Не работет, то есть при равных и различных crc32 на файлах результат один и тот же.
P.S. На фидошном форуме по nncron'у то же не могут дать работающего примера.


Всё. Вопрос закрыт. Подсказали, работает.
Спасибо сказали:
agreed
Сообщения: 143
ОС: Fedora 10, Mac OS X 10.5

Re: помогите написать малюсенькую задачу на форте.

Сообщение agreed »

Что подсказали, если не секрет?
Спасибо сказали:
Sleeping Daemon
Сообщения: 1450

Re: помогите написать малюсенькую задачу на форте.

Сообщение Sleeping Daemon »

agreed писал(а):
25.03.2006 18:42
Что подсказали, если не секрет?

Слово добавить EVAL-SUBST после первого GET-CRC32
Спасибо сказали:
Аватара пользователя
t.t
Бывший модератор
Сообщения: 7390
Статус: думающий о вечном
ОС: Debian, LMDE

Re: помогите написать малюсенькую задачу на форте.

Сообщение t.t »

(agreed @ Mar 23 2006, в 17:31) писал(а):p.s.: Ура! Фортеры появились на линуксфоруме!
Что значит появились? А madskull-то давно уже здесь сидит :)
¡иɯʎdʞ ин ʞɐʞ 'ɐнɔɐdʞǝdu qнεиж
Спасибо сказали:
Аватара пользователя
madskull
Сообщения: 1019
Статус: Экс-металлюга

Re: помогите написать малюсенькую задачу на форте.

Сообщение madskull »

t.t писал(а):
31.03.2006 01:28
(agreed @ Mar 23 2006, в 17:31) писал(а):p.s.: Ура! Фортеры появились на линуксфоруме!
Что значит появились? А madskull-то давно уже здесь сидит :)

Да не, я уже тыщу лет им не занимался. В линуксе вообще не пробовал. Так что, в приведенном примере для меня куча неизвестных слов :)
ArchLinux / IceWM
Спасибо сказали: