Помогите сделать пожалуйста.
Нужно сравнить 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: помогите написать малюсенькую задачу на форте.
Есть второй пример который я вообще не понял.
#( 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: помогите написать малюсенькую задачу на форте.
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 писал(а): ↑24.03.2006 07:54agreed писал(а): ↑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: помогите написать малюсенькую задачу на форте.
Что подсказали, если не секрет?
-
Sleeping Daemon
- Сообщения: 1450
-
t.t
- Бывший модератор
- Сообщения: 7390
- Статус: думающий о вечном
- ОС: Debian, LMDE
Re: помогите написать малюсенькую задачу на форте.
Что значит появились? А madskull-то давно уже здесь сидит(agreed @ Mar 23 2006, в 17:31) писал(а):p.s.: Ура! Фортеры появились на линуксфоруме!
¡иɯʎdʞ ин ʞɐʞ 'ɐнɔɐdʞǝdu qнεиж
-
madskull
- Сообщения: 1019
- Статус: Экс-металлюга
Re: помогите написать малюсенькую задачу на форте.
Да не, я уже тыщу лет им не занимался. В линуксе вообще не пробовал. Так что, в приведенном примере для меня куча неизвестных слов
ArchLinux / IceWM